首页 文章

在Swift Core Data中从多个关系中获取属性

提问于
浏览
1

我不能为我的生活得到这个工作 . 我有一个'匹配'实体和一个由多对多关系加入的'玩家'实体 . 对于每个匹配,我试图创建一个从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: ",")

matchDataNSManagedObject ,其中保存了我提取的数据 . "players"是与"Players"实体的关系的名称 . 并且"firstName"是我尝试串联的属性 .

然而,即使我确定每场比赛都保存了球员记录,但每次比赛都返回'nil' . 我可以很好地显示其他matchData项目,但我遇到了这个多对多关系的问题 .

1 回答

  • 1

    value(forKeyPath: "players") as? NSManagedObject

    如果 players 实际上是一个多对多关系,则此代码将始终返回nil,因为它将尝试强制转换为 NSManagedObject 但实际类型为 SetNSManagedObject .

    value(forKeyPath: "players") as? Set<NSManagedObject> 会让你超越第一道障碍 .

    您也可以自己帮忙指定托管对象子类,然后您将为所有这些内容生成属性,这将使您的代码更清晰,更易于理解 .

相关问题