【发布时间】:2022-01-11 04:22:40
【问题描述】:
我在 OSX 的 swift 5 中使用数组和声明它有一点问题:
-
我知道
[[String]]是一个数组数组,例如[["team1", "2 goals"], ["team2", "0 goals"]]。好吧,这对我来说很容易,但让我解释一下我的情况: -
我有一个“系统”数组,就像 ->
["nes", "Xbox" , "ps2"] -
每个“系统”都有“游戏”,“游戏”中的每个“游戏”都有一系列属性,例如“名称”、“缩略图”、“视频”等...
我需要创建一个类似 ->
的数组["xbox" , [["game1",array of properties],["game2", array of properties]]]
我试图定义一个[[[String]]]
var allMyGames = [[[String]]]()
但我不知道如何将 myGames.append 这个...
我有一个名为 myGames = [[String]]() 的数组,其中包含 ["game1", "property1", "property2" ,"property3"] ["game2", "property1", "property2" ,"property3"]
另一个带有mySystems = [String]()系统的数组包含["nes", "xbox", "ps2"]之类的数据
有什么想法吗?
提前致谢
【问题讨论】:
-
您正在使用数组来对不类似数组的数据进行建模,这总是会让事情变得困难。我认为您应该考虑使用结构来建模您的数据。看起来你需要一个
Game和GameSystem结构,然后你可以在GameSystem结构上创建一个supportedGames: [Game]字段。见docs.swift.org/swift-book/LanguageGuide/… -
最好将数据建模为结构体,而不是像这样使用数组。
-
是的,只有当您拥有可变数量的相同事物(例如游戏机或游戏)时,数组才适合。拥有一系列控制台是有意义的。然而,一个 Console 对象应该是一个结构体,就像一个游戏一样。 Game 结构体内部将是游戏不同属性的字段。
-
在某些情况下,3 维数组可能是一个不错的选择,但这似乎不是其中一种情况。
标签: swift string data-modeling