在 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,但实际类型是 NSManagedObjects 中的 Set

value(forKeyPath: "players") as? Set<NSManagedObject> 将帮助您克服第一道障碍。

您还可以指定托管对象子类,这样您就可以为所有这些东西生成属性,这将使您的代码更加简洁和易于理解。

【讨论】:

谢谢。我会看看我如何继续下去。是的 - 完全同意转向子类方法!

以上是关于在 Swift Core Data 中从多个关系中获取属性的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中从 Core Data 中删除数据时删除 UITableView 行?

在 Swift 中从 Core Data 接收到的排序数组

在 Core Data 中从库中保存和获取多个图像选择

Core Data 在 Swift 中将数据添加到关系中

何时在 Swift 中使用 Core Data 关系?

在 Swift Core Data 中保存没有关系的实体