我的数据设计允许一个用户获得多个选票;每条记录也可以有很多票。我正在大量参与并依赖于这些
来搜索特定元素在主视图控制器中,我在Record实体上有一个fetch控制器,以及一个插入同一个managedContext的var用户实体(即设备用户)。
假设这没关系,在准备segue到详细视图控制器时,我想传入所选记录(没问题);该记录的所有投票数组(我认为没问题,下面的代码);和(这里是棘手的部分)可选设备用户对该记录的投票(这是我的问题)。
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
我要做的是在核心数据中迭代用户的投票,以便记录的用户与设备用户匹配。
答案 0 :(得分:1)
由于您的谓词已经在Votes
的{{1}}集上运行,因此您可以直接使用record
属性。但是您必须用设备用户的正确值替换,例如:
user
将此谓词应用于集合的结果也将是一个集合,因此我认为您可能需要使用let predicateForUsersVote = NSPredicate(format: "user == %@", device-user)
而不是.anyObject()
来获取相关的.first
对象。< / p>