Reputation: 111
Hi any kind souls out there,
I keep getting this error when i am click any value on the keyboard... I can run my codes but get this error when i want to do a search...
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM rangeOfString:options:]: unrecognized selector sent to instance 0x4e2a830'
*** Call stack at first throw:
Please help this noob here.. I am at end wits... =(
- (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;
}
Upvotes: 1
Views: 264
Reputation: 6991
The objects in your search array are NSArray objects, this means that they do not respond to the selector rangeOfString: as that is a NSString method
for (NSString *sTemp in searchArray)
{
NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (titleResultsRange.length != 0)
[copyListOfItems addObject:sTemp];
}
should be something like:
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**");
}
}
Upvotes: 2
Reputation: 11314
You are adding array object in your searchArray.
your app is getting crash NSString *sTemp in searchArray
here because sTemp contains NSArray object not NSString object.
Upvotes: 0