使用 Realm 创建其他模型的数组 - SwiftUI
Create array of other model with Realm - SwiftUI
我有两个模型要存储在领域数据库中。他们是团队和球员。每个团队将有 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
}
然后我将如何看待访问这些新模型,更具体地说,迭代团队以及内部球员的好方法是什么。
我对 Realm 和我的应用程序中的数据库概念还很陌生,所以不太确定从哪里开始
首先,您想利用 List 对象而不是数组来存储团队中的球员:
class Team: Object{
@objc dynamic var teamName: String = ""
let playerList = List<Player>()
}
这将创建一对多关系(一个团队有很多玩家)。
如果您需要从玩家返回到团队,您可以通过直接关系手动完成
class Player: Object{
@objc dynamic var playerName: String = ""
@objc dynamic var shirtNumber: Int = 0
@objc dynamic var myTeam: Team!
}
或者您可以让 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)"
}
}
*请注意,LinkingObjects 是复数形式。它实际上创建了一个多对多的关系——这意味着一个球员可以被链接回多个球队。这通常不是问题,更多的是设计选择。
我有两个模型要存储在领域数据库中。他们是团队和球员。每个团队将有 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
}
然后我将如何看待访问这些新模型,更具体地说,迭代团队以及内部球员的好方法是什么。
我对 Realm 和我的应用程序中的数据库概念还很陌生,所以不太确定从哪里开始
首先,您想利用 List 对象而不是数组来存储团队中的球员:
class Team: Object{
@objc dynamic var teamName: String = ""
let playerList = List<Player>()
}
这将创建一对多关系(一个团队有很多玩家)。
如果您需要从玩家返回到团队,您可以通过直接关系手动完成
class Player: Object{
@objc dynamic var playerName: String = ""
@objc dynamic var shirtNumber: Int = 0
@objc dynamic var myTeam: Team!
}
或者您可以让 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)"
}
}
*请注意,LinkingObjects 是复数形式。它实际上创建了一个多对多的关系——这意味着一个球员可以被链接回多个球队。这通常不是问题,更多的是设计选择。