所以我不是 100% 确定这是否是正确的方法,但我有一个存储一些变量的类,然后我有一个存储这些对象的数组。
我一直在尝试将这些对象放入字典中以便于理解,这样我就不必拥有多个数组,我的想法是我可以使用字典键来识别我想要的数组集。
比如我有
class Player {
init(FirstName: String, LastName:String, Team: String, Pos: String, Line: Int, GaP: Int, Sh: Int, ShotPerc: Float, TOIPerG: Float, ShiPerG: Float, TOIPerShi: Float, FaceOffPer: Float, HitA: Int, HitF: Int, SavePerc: Float){
lastName = LastName
firstName = FirstName
team = Team
pos = Pos
line = Line
GP = GaP
sh = Sh
shotPerc = ShotPerc
TOIPerGame = TOIPerG
shiftsPerGame = ShiPerG
TOIPerShift = TOIPerShi
faceOffPerc = FaceOffPer
hitA = HitA
hitF = HitF
savePerc = SavePerc
}
然后我将它们存储在由团队过滤的单独数组中(仅显示相关代码,但我将 CSV 文件解析为 Player 数组,然后使用过滤器将它们放入适当的数组中)
players.append(Player(FirstName: record["First Name"]!, LastName: record["Last Name"]!, Team: record["Team"]!, Pos: record["Pos"]!, Line: Int(record["Line"]!)!, GaP: Int(record["GP"]!)!, Sh: Int(record["Sh"]!)!, ShotPerc: Float(record["ShotPerc"]!)!, TOIPerG: Float(record["TOIPerGame"]!)!, ShiPerG: Float(record["ShiftsPerG"]!)!, TOIPerShi: Float(record["TOIPerShift"]!)!, FaceOffPer: Float(record["FOffPerc"]!)!, HitA: Int(record["HitA"]!)!, HitF: Int(record["HitF"]!)!, SavePerc: Float(record["SavePerc"]!)!))
var FLA = [Player]()
var TBL = [Player]()
var DET = [Player]()
var WSH = [Player]()
var PIT = [Player]()
var NYR = [Player]()
var NYI = [Player]()
这看起来很乱,因为我想将它们全部放入字典中,但我只能将一个对象放入其中,大概是因为它正在删除 key 。我的问题是如何让它将所有玩家存储在同一个 key 下?
var dict: [String: Array<Player>] = [:]
for (player, _) in LAK.enumerated(){
dict = ["LAK":[LAK[player]]]
}
print(dict["LAK"]?[0].fullName())
我假设它更符合
dict["LAK"] =
但我觉得我在兜圈子!
谢谢!
最佳答案
您不能在同一个键下存储多个值。这违背了 Key-Value
存储的全部目的。一个键应映射到一个值。
您可以改为存储玩家数组,但这违背了使用字典的目的。
当您有对象的唯一键(标识符)时,应使用字典来访问它们。在您的情况下,您可以为此使用玩家名称,前提是它们都是唯一的。
关于swift - 在字典中存储和访问对象数组 - Swift 3 - macOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43724318/