使用Realm-SwiftUI创建其他模型的数组

使用Realm-SwiftUI创建其他模型的数组,swift,swiftui,realm,Swift,Swiftui,Realm,我有两个模型要存储在领域数据库中。他们是团队和球员。每支球队将有x个球员,我希望这些球员可以通过球队访问。例如,用户选择一支球队,然后选择任何相应的球员。我希望用户最终能够创建一个新的团队,创建新的球员,并将球员分配给一个团队 class Team: Object{ @objc dynamic var teamName: String = "" @objc dynamic var players: [Player] = [] } class Player:

我有两个模型要存储在领域数据库中。他们是团队和球员。每支球队将有x个球员,我希望这些球员可以通过球队访问。例如,用户选择一支球队,然后选择任何相应的球员。我希望用户最终能够创建一个新的团队,创建新的球员,并将球员分配给一个团队

class Team: Object{
    @objc dynamic var teamName: String = ""
    @objc dynamic var players: [Player] = []
}

class Player: Object{
    @objc dynamic var playerName: String = ""
    @objc dynamic var shirtNumber: Int = 0
}
然后我将如何看待访问这些新模型,更具体地说,什么是迭代团队和内部玩家的好方法


我对应用程序中的领域和数据库概念非常陌生,因此不确定首先从何处开始

您想利用列表对象而不是数组来存储团队中的玩家:

class Team: Object{
    @objc dynamic var teamName: String = ""
    let playerList = List<Player>()
}
或者,您可以让Realm为您管理它,并自动创建反向关系*

class Player: Object{
    @objc dynamic var playerName: String = ""
    @objc dynamic var shirtNumber: Int = 0
    var teams = LinkingObjects(fromType: Team.self, property: "playerList")
}
就迭代团队和玩家而言,只需一个简单的for循环即可

let teamResults = realm.objects(Team.self)

for team in teamResults {
   print(team.teamName)
   for player in team.playerList {
       print("  player: \(player.playerName)"
   }
}

*请注意,LinkingObject是复数形式。它实际上创造了一种多对多的关系——这意味着一名球员可以与多支球队联系起来。这通常不是一个问题,更多的是一种设计选择。

非常感谢您,这是一个非常有用的答案-我在
let playerList=List()行中遇到了错误“无法专门定义非通用定义”。有什么想法吗?修改代码让playerList=RealmSwift.List()起作用!我找到了答案@benpomeroy9,很乐意帮忙。这个
let playerList=List()
是完全合法的,因此您不需要在它前面加上RealmSwift。但是,如果您有一个名为
列表的其他对象(可能在另一个模块中),它可能会导致名称空间冲突。如果我的回答有帮助,请一定要接受它,这样才能帮助别人。
let teamResults = realm.objects(Team.self)

for team in teamResults {
   print(team.teamName)
   for player in team.playerList {
       print("  player: \(player.playerName)"
   }
}