我有一个应用程序,可以显示保存在核心数据中的文本。在这个文本中,我添加了一个SearchBar和SearchDisplayController。当我在SearchBar中提示并键入某些内容时,我会立即看到以下内容
NSInvalidArgumentException: **'NSInvalidArgumentException', reason: '-[NSManagedObject compare:options:range:]: unrecognized selector sent to instance 0x8cb6460'**.
0x8cb6460是一个名为tempSearchStr的NSString变量。下面是两段代码:
第一块
- (NSManagedObjectContext *)managedObjectContext
{
NSManagedObjectContext *context = nil;
id delegate = [[UIApplication sharedApplication] delegate];
if ([delegate performSelector:@selector(managedObjectContext)]) {
context = [delegate managedObjectContext];
}
return context;
}第二个区块
- (void)searchInNoteMe
{
NSString *searchString = self.searchBar.text;
for (NSString *tempSearchStr in notemearray) {
NSComparisonResult NSCResult = [tempSearchStr compare:searchString
options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)
range:NSMakeRange(0, [searchString length])];
if (NSCResult == NSOrderedSame) {
[notemearrayfiltered addObject:tempSearchStr];
}
}
}notemearray的代码
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
NSManagedObjectContext *moc = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"NoteMe"];
notemearray = [[moc executeFetchRequest:fetchRequest
error:nil] mutableCopy];
notemearrayfiltered = [[NSMutableArray alloc] initWithArray:notemearray];
[self.tableView reloadData];
}发布于 2014-04-27 21:16:46
notemearray包含NSManagedObject%s而不是NSString%s,这是异常告诉您的。
您希望在CoreData对象的noteme属性上调用compare:options:range:。
- (void)searchInNoteMe
{
NSString *searchString = self.searchBar.text;
for (NSManagedObject *note in notemearray) {
NSString *noteString = [note valueForKey:@"noteme"];
NSComparisonResult NSCResult = [noteString compare:searchString
options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)
range:NSMakeRange(0, [searchString length])];
if (NSCResult == NSOrderedSame) {
[notemearrayfiltered addObject:note];
}
}
}如果要更新NSManagedObject上的noteme属性,可以执行以下操作:
[note setValue:@"New string" forKey:@"noteme"];https://stackoverflow.com/questions/23321472
复制相似问题