【发布时间】:2014-08-07 15:18:16
【问题描述】:
我想使用NSPredicate predicateWithFormat: 方法过滤NSArray。我有一些变量,我想以这种格式多次使用。不想多写几遍。这是一个例子:
NSString *someText = @"some text";
NSString *str = [NSString stringWithFormat:
@"(field1 CONTAINS[cd] %1$@) OR (field2 CONTAINS[cd] %1$@)", someText];
NSLog(@"%@", str);
// prints : (field1 CONTAINS[cd] some text) OR (field2 CONTAINS[cd] some text)
所以它适用于NSString stringWithFormat:
谁能解释一下为什么它不工作 NSPredicate predicateWithFormat: 以及如何解决它?
[someArray filteredArrayUsingPredicate:
[NSPredicate predicateWithFormat:
@"(field1 CONTAINS[cd] %1$@) OR (field2 CONTAINS[cd] %1$@)",
someText]];
我收到此异常:
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'无法解析格式字符串"(field1 CONTAINS[cd] %1$@) OR (field2 CONTAINS[cd] %1$@)"'
提前致谢
【问题讨论】:
-
你试过带块的谓词了吗?
-
谢谢,我重写了我的代码以使用 predicateWithBlock,效果很好。仍在徘徊为什么格式不起作用。
-
predicateWithFormat 中的$ 用于其他用途,请阅读此内容以获取更多信息。 developer.apple.com/library/ios/documentation/cocoa/Conceptual/…
标签: ios objective-c nsstring nspredicate