1

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

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

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

name 是NSString*我班级的一个属性, all 是一个包含我的对象的数组。只是一些琐碎的代码,没有多余的。

谢谢你的帮助!

4

1 回答 1

1

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

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

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

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

第二种方法自动在带有 %@ 说明符的参数周围加上引号。

于 2014-06-12T11:55:20.307 回答