【发布时间】:2019-02-04 05:45:47
【问题描述】:
所以我对领域很陌生,我觉得我的问题很基本,但我找不到答案。
基本上,我正在尝试查询与特定TeamID 关联的所有playerName 的领域(即TeamID 不是主键),但是我无法找到解决方案。我不断收到Value of type 'Results<playerInfoTable>' has no member 'playerName' 错误。
下面是我的 Realm 类:
`class playerInfoTable: 对象 {
@objc dynamic var playerID: Int = 0
@objc dynamic var playerName: String = ""
@objc dynamic var jerseyNum: Int = 0
@objc dynamic var TeamID: String = ""
@objc dynamic var goalCount: Int = 0
@objc dynamic var shotCount: Int = 0
override class func primaryKey() -> String {
return "playerID"
}
}`
我正在使用查询领域的代码:
let mainPlayerFilter = NSPredicate(format: "teamID == %@", "1")
let mainPlayerStrings = realm.objects(playerInfoTable.self).filter(mainPlayerFilter)
let mainPlayerTeamName = mainPlayerStrings.playerName
解决方案!
let mainPlayerFilter = NSPredicate(format: "TeamID == %@", String(homeTeam!))
let mainPlayerStrings = realm.objects(playerInfoTable.self).filter(mainPlayerFilter)
let mainPlayerTeamName = mainPlayerStrings.value(forKeyPath: "playerName") as! [String]
【问题讨论】:
-
很高兴您找到了解决方案。然而,这对未来的读者来说毫无意义,因为 homeTeam 变量是未定义的,所以我们不知道它是什么。另外,您应该考虑创建一个具有主键的 Team 对象,然后将该键存储在每个玩家的属性中。和/或将 Payers List 属性添加到 Team 对象,并将每个玩家与该团队相关联。这样做可以完全避免查询,因为当您加载团队时,您将在 player 属性中拥有指向所有该团队球员的链接。