2011-06-13 72 views
1

嗨任何種類的靈魂在那裏的任何值,錯誤,當我點擊鍵盤

我不斷收到此錯誤當我點擊鍵盤上的任意值...我可以運行我的代碼,但得到這個錯誤當我想做一個搜索...

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM rangeOfString:options:]: unrecognized selector sent to instance 0x4e2a830' 
*** Call stack at first throw: 

在這裏幫助這個小白..我在結束魂飛魄散...... =(

- (void) searchTableView { 

    NSString *searchText = searchBar.text; 
    NSMutableArray *searchArray = [[NSMutableArray alloc] init]; 

    for (NSDictionary *patients in listOfItems) 
    { 
     NSArray *array = [patients objectForKey:@"Patients"]; 
     [searchArray addObjectsFromArray:array]; 
    } 

    for (NSString *sTemp in searchArray) 
    { 
     NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch]; 

     if (titleResultsRange.length != 0) 
      [copyListOfItems addObject:sTemp]; 
    } 

    [searchArray release]; 
    searchArray = nil; 
} 

回答

2

在搜索數組中的對象是的NSArray點的對象,這意味着他們不給選擇rangeOfString迴應:,因爲這是一個的NSString方法

for (NSString *sTemp in searchArray) 
{ 
    NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch]; 
    if (titleResultsRange.length != 0) 
    [copyListOfItems addObject:sTemp]; 
} 

應該是這樣的:

for(NSArray *array in searchArray) 
{ 
    // NSString *str = [array objectAtIndex:0]; 
    PatientInfoObject *obj = [array objectAtIndex:0]; 
    NSString *str = obj.id; 
    // to be sure 
    if([str isKindOfClass:[NSString class]]) 
    { 
     NSRange titleResultsRange = [str rangeOfString:searchText options:NSCaseInsensitiveCompare]; 
     if(titleResultsRange.length != 0) 
     { 
     [copyListOfItems addObject:str]; 
     } 
    } 
    else 
    { 
     // this shouldn't have happened, log something to console 
     NSLog(@"**Object in array is not of type NSString**"); 
    } 
} 
+0

非常感謝您的幫助......但是我每次按鍵盤都會得到for循環的其他部分..問題是什麼? 在此先感謝.. =) – 2011-06-13 07:32:06

+0

如果你到了else部分,這意味着該對象仍然不是NSString,那麼該數組中存儲了哪些對象? (要想出數組轉儲到控制檯使用:NSLog(@「Array contents:%@」,array);) – 2011-06-13 07:33:38

+0

PatientInfo對象。它們包含NSString ID,int類別和int年齡。我希望使用ID進行搜索...這就是爲什麼我真的明白你的方法,因爲它不僅包含NSString對象... =( – 2011-06-13 07:39:23

0

您在加入數組對象你的searchArray。

你的應用程序在這裏崩潰NSString *sTemp in searchArray因爲sTemp包含NSArray對象而不是NSString對象。