Ошибка при нажатии на любые значения клавиатуры - PullRequest
1 голос
/ 13 июня 2011

Привет всем добрым душам,

Я продолжаю получать эту ошибку, когда нажимаю любое значение на клавиатуре ... Я могу запустить свои коды, но получаю эту ошибку, когда хочу выполнить поиск...

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 ]

2 голосов
/ 13 июня 2011

Объектами в вашем поисковом массиве являются 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 голосов
/ 13 июня 2011

Вы добавляете объект массива в ваш searchArray.

ваше приложение получает сбой NSString *sTemp in searchArray здесь, потому что sTemp содержит объект NSArray, а не объект NSString.

...