ios - 具有多重关系的核心数据子查询
问题描述
这是我的核心数据库表的结构。想在谓词中创建子查询,下面是查询的描述。
生成所有唯一的提交,其中 SubmisisonField.value 与数组匹配。此查询顶部的图像。
对于具有员工表请求的第二张图像:生成所有 ActivityFeedCard,其中员工姓名与字符串匹配。现在 Employee 中的 id 字段与 SubmissionField.value 的字段相同,或者我们可以说 SubmissionField.value == Employee.id。我们必须按员工的名字、姓氏等进行搜索,非常感谢。
let fetchCardsContext = CoreDataManager.shared.getNewBackgroundContext(name: "Fetch Cards for display BG Context")
var predicate: NSPredicate?
self.displayedCards.removeAll()
predicate = NSPredicate(format: "SUBQUERY(submission.submissionTemplate.submissionField.value, $v, $v IN %@).@count > 0", empArray)
self.displayedCards = ActivityFeedCard.fetchAndSort(in: fetchCardsContext, predicate: predicate, sortOptions: nil) ?? [ActivityFeedCard]()
解决方案
您想“生成所有唯一的提交”。所以获取请求应该基于Submission
实体。相对于Submission
实体,submissionTemplate.submissionField.value
是一个集合(因为submissionField
关系是对多的)。您只想在 fetchSubmission
中包含集合“与数组匹配”的那些对象。假设您的意思是“如果集合和数组有任何共同的值”,那么要使用的谓词是:
NSPredicate(format:"SUBQUERY(submissionTemplate.submissionField.value, $v, $v IN %@).@count > 0",yourArray)
或者用一句话来说:“ count
(值,,,$v
来自作为数组的submissionTemplate.submissionField.value
集合的集合IN
)大于零”。
推荐阅读
- wordpress - ACF 无法使用用户字段
- xamarin.android - 如何在 Xamarin.Android 中创建视图
- python - 使用 python 从 Flickr 下载给定 ID 的照片统计信息
- php - 如何在没有身份验证默认值的情况下实现身份验证防护
- c# - 我将如何优化这个 if 语句
- angular - 传单折线和多边形绘图无法正常工作
- c++ - type_traits 中检查类型是否为 const char* 的函数是什么?
- javascript - JQuery AJAX url 调用 - 有时不起作用
- php - 查询具有关系的模型字段
- azure - 如何通过命令行将 Azure 服务主体详细信息传递给 Ansible?