使用搜索栏在 CoreData 中搜索 NSSet 属性

Posted

技术标签:

【中文标题】使用搜索栏在 CoreData 中搜索 NSSet 属性【英文标题】:Searching an NSSet attribute in CoreData with a searchbar 【发布时间】:2011-10-14 10:07:58 【问题描述】:

我有一个带有对象“bar”的 CoreData 模型,它与实体“drink”有一对多关系“drinks”。

实体饮料只有一个名为“名称”的属性。

现在在我的应用中,我有一个 tableView,它显示了所有的栏,并包含了一个 searchBar。

在这个 searchBar 中,我希望能够搜索 namelocation 以及酒吧中可能提供的 drinks .

我已经实现了这样的名称和位置:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"
                                       name contains[cd] %@ OR
                       location.name_extern contains[cd] %@ OR 
                       location.name_intern contains[cd] %@", 
                            searchText, searchText, searchText];

所以现在我的问题是:如何在饮料的 NSSet 中搜索 name 属性?

编辑:

为了更清楚,这里是重要的数据模型:

Bar

Attributes: 
name
location
drinks

Location

Attributes:
name_extern
name_intern

Drink:

Attributes:
name

我有一个searchText,需要检查以下4个地方是否匹配:

    (酒吧的)名称 name_extern(酒吧所在地) name_intern(酒吧所在地) (酒吧所有饮品的名称)

【问题讨论】:

【参考方案1】:

这样的事情应该可以工作:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"
                                       name contains[cd] %@ OR
                       location.name_extern contains[cd] %@ OR 
                       location.name_intern contains[cd] %@ OR
                   ANY location.drinks.name contains[cd] %@", 
                            searchText, searchText, searchText, searchText];

【讨论】:

感谢您的建议!但我认为你误解了我的问题。我将再次编辑问题以使其更清楚。 我希望现在更清楚了..我需要检查饮料的名称是否包含搜索文本..所以我认为您的答案行不通。

以上是关于使用搜索栏在 CoreData 中搜索 NSSet 属性的主要内容,如果未能解决你的问题,请参考以下文章

CoreData - 不在 NSSet 上保存关系或外键详细信息

搜索栏在 iOS 中无法正常工作 [关闭]

UISearchController 搜索栏在活动时与第一个单元格重叠

UISearchControllerDelegate - 搜索栏在表头中不可见

Nativescript - 搜索栏在操作栏中无法正确显示(IOS)

Swift Navigationbar 搜索栏在单击时关闭搜索文本