我正在开发一个Core Data应用程序,允许用户将数据添加到表视图中。每个对象都有三个不同的属性。在文本字段中键入属性后,用户然后保存数据对象;在表格视图中可以看到它们。
我还实现了一个搜索功能,让用户可以使用NSPredicate根据属性搜索对象。我查看了this指南和此tutorial以获取有关如何执行此操作的信息。每个属性对应一个谓词,如下面的代码所示。
我的问题是用户只能根据第一个属性搜索对象。因此,当他们在第一个属性的文本字段中输入内容时,搜索将返回正确的结果,并且每个属性都显示在文本字段中。如果用户尝试使用第二个或第三个属性进行搜索,则不会返回任何内容。
NSPredicate *predAttOne =
[NSPredicate predicateWithFormat:@"(name CONTAINS %@)",
_one.text];
[request setPredicate:predAttOne];
//////////////PROBLEM CODE///////////////
//If the code below is commented out, the user is able to search using
//the first attribute successfully, and al the data attributes are shown
//in the text fields. If it's not commented out, no data is found.
NSPredicate *predAttTwo =
[NSPredicate predicateWithFormat:@"(mint CONTAINS %@)",
_two.text];
[request setPredicate:predAttTwo];
NSPredicate *predAttThree =
[NSPredicate predicateWithFormat:@"(year CONTAINS %@)",
_three.text];
[request setPredicate:predAttThree];
有谁知道如何根据不同的属性使用谓词进行搜索?我知道复合谓词,但我不确定这是我需要的情况。
非常感谢!
答案 0 :(得分:1)
你可以这样做谓词:
[NSPredicate predicateWithFormat:@"(name CONTAINS %@) OR (mint CONTAINS %@) OR (year CONTAINS %@)", _two.text, _two.text, _two.text];