在 Swift Core Data 中从多个关系中获取属性
Posted
技术标签:
【中文标题】在 Swift Core Data 中从多个关系中获取属性【英文标题】:Fetch attributes from to many relationship in Swift Core Data 【发布时间】:2017-04-24 08:51:47 【问题描述】:我这辈子都无法让它发挥作用。我有一个“匹配”实体和一个“玩家”实体,通过多对多关系加入。对于每场比赛,我都试图创建一串名称,这些名称是从 Core Data 中的 Players 实体中提取的。这是我一直在努力实现这一目标的最新版本:
let players = matchData[indexPath.row].value(forKeyPath: "players") as? NSManagedObject
let playerNames = players?.value(forKey: "firstName") as? NSMutableArray
let playersString = playerNames?.componentsJoined(by: ",")
matchData
是保存我获取的数据的NSManagedObject
。 “玩家”是与“玩家”实体的关系名称。而“firstName”是我试图串在一起的属性。
然而,即使我确定每场比赛都保存了球员记录,这也会为每场比赛返回“nil”。我可以很好地显示其他 matchData 项目,但在这种多对关系上遇到了问题。
【问题讨论】:
【参考方案1】:value(forKeyPath: "players") as? NSManagedObject
如果players
确实是一对多关系,那么这段代码将始终返回 nil,因为它会尝试转换为 NSManagedObject
,但实际类型是 NSManagedObject
s 中的 Set
。
value(forKeyPath: "players") as? Set<NSManagedObject>
将帮助您克服第一道障碍。
您还可以指定托管对象子类,这样您就可以为所有这些东西生成属性,这将使您的代码更加简洁和易于理解。
【讨论】:
谢谢。我会看看我如何继续下去。是的 - 完全同意转向子类方法!以上是关于在 Swift Core Data 中从多个关系中获取属性的主要内容,如果未能解决你的问题,请参考以下文章