2 iphone objective-c uisearchbar nsarray ios
我有一个带有搜索栏的tableview.我想搜索我的整个核心数据库.
我在这里将所有内容加载到数组中:
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Entity" inManagedObjectContext:managedObjectContext];
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:entityDescription];
NSError *error = nil;
NSArray *array = [managedObjectContext executeFetchRequest:request error:&error];
self.myArray = array;
Run Code Online (Sandbox Code Playgroud)
我正在使用此方法搜索,但收到错误:
- (void) searchTableView {
NSString *searchText = searchBar.text;
NSMutableArray *searchArray = [[NSMutableArray alloc] init];
for (NSDictionary *dictionary in myArray)
{
NSString *value = [dictionary objectForKey:@"name"];
[searchArray addObject:value];
}
for (NSString *sTemp in searchArray)
{
NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (titleResultsRange.length > 0)
[copyListOfItems addObject:sTemp];
}
[searchArray release];
searchArray = nil;
}
Run Code Online (Sandbox Code Playgroud)
但是当我搜索时,我在这里遇到了崩溃:
MedicalCode *code = [self.copyListOfItems objectAtIndex:indexPath.row];
cell.codeLabel.text = code.description;
Run Code Online (Sandbox Code Playgroud)
错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ICD9Disease objectForKey:]: unrecognized selector sent to instance 0x1be6e0'
Run Code Online (Sandbox Code Playgroud)
您收到错误是因为您要求一个对象,但是您正在尝试在行中设置一个字符串:
NSString *value = [dictionary objectForKey:@"name"];
Run Code Online (Sandbox Code Playgroud)
由于您获取的是字符串,而不是对象,因此您需要使用的是valueForKey:
NSString *value = [dictionary valueForKey:@"name"];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
811 次 |
| 最近记录: |