从一对多关系中搜索/检索单个值核心数据 Swift
Search / retrieve single value from one to many relationships Core Data Swift
我的数据设计允许一个用户有很多票;每条记录也可以有很多选票。我正在努力参考和搜索依赖于这些
的特定元素
在主视图控制器中,我在 Record 实体上有一个 fetch 控制器,以及一个插入到同一 managedContext 中的单个 var 用户实体(即 device-user)。
假设这样就可以了,在准备segue到详细视图控制器时,我想传入选中的记录(没问题);该记录的所有投票的数组(我认为没问题,下面的代码);和(这是棘手的部分)可选的 device-user 对该记录的投票(这是我的问题)。
let votesAsSet = record.votes
controller.votes = votesAsSet?.allObjects as? [Vote]
let predicateForUsersVote = NSPredicate(format: "record.votes.user == user")
let thisUsersVoteForThisRecordAsSet = votesAsSet?.filteredSetUsingPredicate(predicateForUsersVote)
controller.thisUsersVote = thisUsersVoteForThisRecordAsSet!.first as? Vote
我想做的是遍历核心数据中的用户投票,找到记录的用户与 device-user 匹配的投票。
因为你的谓词已经在record
的Votes
集合上运行,你可以直接使用user
属性。但是您必须为设备用户替换正确的值,例如:
let predicateForUsersVote = NSPredicate(format: "user == %@", device-user)
将此谓词应用于集合的结果也将是一个集合,因此我认为您可能需要使用 .anyObject()
而不是 .first
来获取相关的 Vote
对象.
我的数据设计允许一个用户有很多票;每条记录也可以有很多选票。我正在努力参考和搜索依赖于这些
的特定元素在主视图控制器中,我在 Record 实体上有一个 fetch 控制器,以及一个插入到同一 managedContext 中的单个 var 用户实体(即 device-user)。
假设这样就可以了,在准备segue到详细视图控制器时,我想传入选中的记录(没问题);该记录的所有投票的数组(我认为没问题,下面的代码);和(这是棘手的部分)可选的 device-user 对该记录的投票(这是我的问题)。
let votesAsSet = record.votes
controller.votes = votesAsSet?.allObjects as? [Vote]
let predicateForUsersVote = NSPredicate(format: "record.votes.user == user")
let thisUsersVoteForThisRecordAsSet = votesAsSet?.filteredSetUsingPredicate(predicateForUsersVote)
controller.thisUsersVote = thisUsersVoteForThisRecordAsSet!.first as? Vote
我想做的是遍历核心数据中的用户投票,找到记录的用户与 device-user 匹配的投票。
因为你的谓词已经在record
的Votes
集合上运行,你可以直接使用user
属性。但是您必须为设备用户替换正确的值,例如:
let predicateForUsersVote = NSPredicate(format: "user == %@", device-user)
将此谓词应用于集合的结果也将是一个集合,因此我认为您可能需要使用 .anyObject()
而不是 .first
来获取相关的 Vote
对象.