NSPredicate过滤数组时的NSUnknownKeyException

时间:2014-06-12 11:20:39

标签: ios nsstring nspredicate nsunknownkeyexception

我有一个非常烦人的错误。可能有一个简单的解决方案,但我无法得到它。

我经常使用NSPredicate而没有任何问题。现在出现以下错误:由于未捕获的异常终止应用&#39; NSUnknownKeyException&#39;,原因:&#39; [<TestClass 0x10cf3b80> valueForUndefinedKey:]: this class is not key value coding-compliant for the key testValue.&#39;

NSString* predicateString = [NSString stringWithFormat:@"name CONTAINS[cd] %@",@"testValue"];
NSPredicate* filterPredicate = [NSPredicate predicateWithFormat:predicateString];
NSArray* filtered = [all filteredArrayUsingPredicate:filterPredicate];

name是我的类的NSString*属性,所有属性都是包含我的对象的数组。只是一些简单的代码,没有什么额外的。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

如果你将谓词构造为NSString,它应该是(注意额外的引号):

NSString* predicateString = [NSString stringWithFormat:@"name CONTAINS[cd] '%@'", @"testValue"];

或者,您可以使用以下方式直接构建它:

NSPredicate* filterPredicate = [NSPredicate predicateWithFormat:@"name CONTAINS[cd] %@", @"testValue"];

第二种方法使用%@说明符自动为参数添加引号。