【问题标题】:Semantic Issue: Incompatible pointer to integer conversion sending 'NSUInteger *' (aka 'unsigned int *') to parameter of type 'NSUInteger'语义问题:指向整数转换的不兼容指针将“NSUInteger *”(又名“unsigned int *”)发送到“NSUInteger”类型的参数
【发布时间】:2011-06-23 17:21:42
【问题描述】:

所以我得到了这个警告

Semantic Issue: Incompatible pointer to integer conversion sending 'NSUInteger *' (aka 'unsigned int *') to parameter of type 'NSUInteger' (aka 'unsigned int') 

基本上我正在拉入一个 JSON 提要.. 循环通过它以将列与数据匹配,然后将数据放在要在表行中使用的对象中...

NSDictionary *js_result = [response JSONValue];

NSLog(@"This is the LIST: %@",[js_result objectForKey:@"LIST"]);
//  get columns
NSArray *columns = [[js_result objectForKey:@"LIST"] componentsSeparatedByString:@","];
//  get data
NSArray *rows = [[js_result objectForKey:@"QUERY"] objectForKey:@"DATA"];



NSUInteger *study_id_int = (NSUInteger *)[columns indexOfObject:@"STUDY_ID_DICOM"];
NSUInteger *study_desc_int = (NSUInteger *)[columns indexOfObject:@"STUDY_DESCRIPTION"];
NSUInteger *study_date_int = (NSUInteger *)[columns indexOfObject:@"STUDY_DATETIME"];
NSUInteger *modality_int = (NSUInteger *)[columns indexOfObject:@"MODALITY"];
NSUInteger *referring_physician_name_int = (NSUInteger *)[columns indexOfObject:@"REFERRING_PHYSICIANS_NAME"];
NSUInteger *patient_id_dicom_int = (NSUInteger *)[columns indexOfObject:@"PATIENT_ID_DICOM"];
NSUInteger *patient_name_int = (NSUInteger *)[columns indexOfObject:@"PATIENT_NAME"];
NSUInteger *birth_date_int = (NSUInteger *)[columns indexOfObject:@"BIRTH_DATE"];
NSUInteger *institution_name_int = (NSUInteger *)[columns indexOfObject:@"INSTITUTION_NAME"];
NSUInteger *study_recvd_datetime_int = (NSUInteger *)[columns indexOfObject:@"STUDY_RECVD_DATETIME"];
NSUInteger *image_count_int = (NSUInteger *)[columns indexOfObject:@"Image_Count"];
NSUInteger *patient_study_count_int = (NSUInteger *)[columns indexOfObject:@"PATIENT_STUDY_COUNT"];



StudyListRow *StudyRow = [[StudyListRow alloc] init];

for(NSMutableArray *i in rows)
{
    NSLog(@"ROW DATA: %@",i);
    StudyListRow *StudyRow = [[StudyListRow alloc] init];
    StudyRow.study_id_dicom = (NSString *)[i objectAtIndex:study_id_int];
    StudyRow.study_description = [i objectAtIndex:study_desc_int];
    StudyRow.study_datetime = [i objectAtIndex:study_date_int];
    StudyRow.modality = [i objectAtIndex:modality_int];
    StudyRow.referring_physician_name = [i objectAtIndex:referring_physician_name_int];
    StudyRow.patient_id_dicom = [i objectAtIndex:patient_id_dicom_int];
    StudyRow.patient_name = [i objectAtIndex:patient_name_int];
    StudyRow.birth_date = [i objectAtIndex:birth_date_int];
    StudyRow.institution_name = [i objectAtIndex:institution_name_int];
    StudyRow.study_recvd_datetime = [i objectAtIndex:study_recvd_datetime_int];
    StudyRow.image_count = [i objectAtIndex:image_count_int];
    StudyRow.patient_study_count = [i objectAtIndex:patient_study_count_int];



}

StudyRow.... 行中的每一行都给出警告.. 我不知道为什么.. 想法?

【问题讨论】:

  • 如果您真的阅读了警告,它会告诉您原因 - “将 'NSUInteger *'(又名 'unsigned int *')发送到 'NSUInteger' 类型的参数”,即您传递的是指针而不是对象。
  • 我确实阅读了警告.. 但对这一切都很陌生.. 我将其视为将 NSUinteger 发送给 NSUinteger.. 我什至没有注意到 *...
  • 真正的问题是:您收到了警告,但开始时假设警告有一些奇怪之处。最初的假设应该是代码有问题,警告会告诉你哪里出了问题。

标签: iphone objective-c ipad ios4 nsarray


【解决方案1】:

这样的行:

NSUInteger *study_id_int = (NSUInteger *)[columns indexOfObject:@"STUDY_ID_DICOM"];

应该是

NSUInteger study_id_int = (NSUInteger)[columns indexOfObject:@"STUDY_ID_DICOM"];

它们是原语,而不是指向对象的指针(您需要星号来表示)。

【讨论】:

    【解决方案2】:

    应该是 NSUInteger varName,而不是 NSUInteger *varName。它们是原语。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 1970-01-01
      相关资源
      最近更新 更多