ios - 使用谓词过滤嵌套的 NSSet
问题描述
我有一个具有一对多关系的 coredata 模型,我的目标是根据子元素(Account<->>Contact)过滤父数组。
Account{
@NSManaged public var recent_contact_id: String?
@NSManaged public var contacts: NSSet? //Many contact in one account
}
Contact {
NSManaged public var contact_id: String?
NSManaged public var name: String?
}
在将联系人保存到 coredata 时,我在 Account 中保留了一个引用,其中最后更新的contact_id 为recent_contact_id。最后在获取后我有一个帐户数组,我的目标是根据从帐户级别作为recent_contact_id 传递的contact_id 参数过滤帐户。部分完成的代码如下。
// Im stuck passing the recent_contact_id to the predicate, if i hardcode the value it'll give me the right result. but i want to pass something like $0.recent_contact_id
let namePredicate = NSPredicate(format: "SUBQUERY(contacts, $x, $x.contact_id == %@).@count > 0", ??) //how tp pass recent_contact_id ??
let filteredArray = accountsArray.filter { namePredicate.evaluate(with: $0) };
解决方案
推荐阅读
- conditional-statements - 为什么即使将条件显式设置为 true,我的 doIf 代码块也不执行?
- python - 尝试写入另一个程序使用的文件时如何避免 OSErrors?
- c# - 在字符串中搜索超链接
- batch-file - 存储可选管道多行字符串和可选参数的批处理脚本
- python - 以管理员身份运行 Anaconda macOS Catalina
- java - targetCompatability 和使用该 JDK 运行 Gradle 之间有区别吗?
- flutter - xcrun:错误:无效的活动开发者路径,zsh 更新后出现问题
- search - 如何在 Excel 的搜索功能中迭代地更改 inside_text 值
- c# - 为什么调用 SvgDocument.Save() 时对 SvgElements 的更改不可见?
- javascript - 如何使用算术更改 JSON 文件的值?