使用搜索栏在 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 中,我希望能够搜索 name、location 以及酒吧中可能提供的 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 上保存关系或外键详细信息
UISearchController 搜索栏在活动时与第一个单元格重叠
UISearchControllerDelegate - 搜索栏在表头中不可见