从一对多关系中搜索/检索单个值核心数据 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 匹配的投票。

因为你的谓词已经在recordVotes集合上运行,你可以直接使用user 属性。但是您必须为设备用户替换正确的值,例如:

let predicateForUsersVote = NSPredicate(format: "user == %@", device-user)

将此谓词应用于集合的结果也将是一个集合,因此我认为您可能需要使用 .anyObject() 而不是 .first 来获取相关的 Vote 对象.