2011-02-08 51 views
10

所以我得到這個警告語義問題:不兼容的指針整數轉換髮送「NSUInteger *」(又名「無符號整數*」),以類型的參數「NSUInteger」

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的....線條給出了警告..和我hav不知道爲什麼..想法?

+1

如果實際閱讀警告,它會告訴您爲什麼 - 「將'NSUInteger *'(又名'unsigned int *')發送給類型爲'NSUInteger'的參數」,即您正在傳遞指針而不是對象。 – Abizern 2011-02-08 21:35:11

+0

我讀過警告..但是對這一切都是新的..我把它看作是發送一個NSUinteger到一個NSUinteger ..我甚至沒有注意到* ... – Critter 2011-02-08 22:04:16

+0

這是真正的問題:你有一個警告,但開始假設警告有些奇怪的事情。最初的假設應該是代碼有問題,並且警告會告訴你什麼是錯誤的。 – gnasher729 2014-05-27 16:45:27

回答

22

線路是這樣的:

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

應該

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

他們是原語,而不是對象的指針(在這裏您將需要星號只是表示)。

5

應該是NSUInteger varName,而不是NSUInteger * varName。他們是原始人。

相關問題