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