ios - NSPredicate 导致 App 在 UISearchBar 中输入时崩溃

标签 ios objective-c arrays nspredicate

我相信我已经将范围缩小到这里的这段代码:

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{

    NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"name contains[c] %@", searchText];
    NSArray *array = [NSArray arrayWithArray:users];
    NSLog(@"%@",array);
    searchResults = [array filteredArrayUsingPredicate:resultPredicate];
    NSLog(@"SR: %@",searchResults);
    searchResults = array;
}

我从一个 NSMutableArray users 开始并将它“转换”为一个数组,创造性地命名为 array。从这里开始,我尝试使用 Predicate 过滤数组。此时 searchResults 根据 NSLog 变得看似空了。

这是怎么回事?为什么会崩溃?如果我忽略 Predicate 函数并在数组中为 searchResults 提供两个对象,无论我键入什么,users 中的前两个单元格都会出现。我尝试的所有其他方法只会让应用程序崩溃。

当应用程序崩溃时,我得到以下非常有用(讽刺)的控制台日志:

     *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSCFString 0x165025b0> valueForUndefinedKey:]: 
this class is not key value coding-compliant for the key name.'
    *** First throw call stack:
    (0x28fdbc1f 0x36786c8b 0x28fdb929 0x29cbe5ab 0x29c25677 0x29c618c9 0x29c6148b 0x29c60477 0x29c60299 0x355fd 0x3582f 0x2c677be5 0x2c677b1f 0x2c4cbc2b 0x2c4cbbd1 0x2c4b6863 0x2c677909 0x2c4d5ab5 0x2c64798b 0x2c646f29 0x2c677741 0x2c646d77 0x2c7df457 0x2c7df1ef 0x2c4c03cd 0x29cead6f 0x28fa2377 0x28fa1787 0x28f9fded 0x28eee211 0x28eee023 0x302e70a9 0x2c4fa1d1 0x21ac5 0x36d06aaf)
    libc++abi.dylib: terminating with uncaught exception of type NSException
    (lldb) 

如有任何帮助,我们将不胜感激。

最佳答案

消息很清楚 - 你的数组包含 NSString 对象,它没有属性 name,但是你的谓词指定你想要比较的值name 属性。

你可能想要

[NSPredicate predicateWithFormat:@"SELF contains[c] %@", searchText];

关于ios - NSPredicate 导致 App 在 UISearchBar 中输入时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27211056/

相关文章:

ios - 从 appdelegate 访问 Tabbar View Controller 的子 Controller

ios - 搜索栏和搜索栏 Controller 只需点击它就会崩溃

ios - 如何解析我添加到项目中的 XML 文件

ios - 如何在 Objective-C 中测试字符串是否为空?

javascript - 从关联数组/对象中提取的全局变量?

ios - 带 Images.xcassets 的 SplashScreen 在模拟器上工作,但在 iPad 上黑屏

ios - 动画 UILabel 增长和收缩

iphone - iPhone/Objective-C的try-catch异常处理实践

javascript - sort() 在 mozilla 和 opera 中无法正常工作

java - 我的数组代码没有显示输出,我的错误/缺少是什么