arrays - Swift:多维结构组织和初始化
问题描述
在初始化这个结构时,这里有两个简单的问题。
- 一个是枚举值 TS(我收到错误:无法将类型“TournNames”的值转换为预期的参数类型“TournamentName”)
- 另一个是初始化字符串数组(我收到错误:无法将类型“[String]”的值转换为预期的参数类型“TourmentScores”
假设我正在尝试建立一个结构来模拟网球运动员的得分以及他们在每个主要锦标赛中的所有比赛(只是为了好玩)。每个锦标赛都有一个名称(例如温布尔登)和该球员的一系列分数(例如,在首场比赛中,他们的分数可能是“4-6, 6-4, 7-6, 6-2”)。 . 每场比赛最多7场比赛。每个玩家应该有一个包含四个锦标赛的数组(名称和分数数组),最终应该有一个玩家数组。我也试图不太成功地使用枚举。理想情况下,如果我想知道罗杰·费德勒在今年第三场温网比赛中的表现,我会访问类似 player.tournament.wim.Roundof32 或类似的东西。但在我开始玩之前,我似乎无法为单个锦标赛初始化虚拟数据。
有任何想法吗?我不认为这是一个很难的问题,但我只是不知道每个。有关有问题的两行,请参见下面的“***此行”
// tournament name enum
enum TournNames : String {
case wim = "Wimbledom"
case fo = "French Open"
case ao = "Australian Open"
case uo = "US Open"
}
//
struct TournamentName {
var Tname : TournNames // = .wim
}
// This is the structure for a tournament score array with some dummy values.
struct TouramentScores {
var Match1 : String = "7-6, 6-4, 3-6, 7-6"
var Match2 : String = "7-6, 6-4, 3-6, 7-6"
}
// This is one entire Tournament record for one player = tournament name + array of scores ... the next goal but not used here until I get over these hurdles
struct TournamentResult {
var TournamentName : TournNames = .wim
var Scores : TouramentScores
}
// ... finally the structure of a player ...
struct DummyTennisPlayer {
var LastName : String // last name
var FirstName : String //first name
var TN : TournamentName
var TS : TouramentScores
// var WimRes : TournamentResult // to start a single tournament
// var SeasonResults : [TournamentResult] // ultimately should be an array of 4 tournaments
}
// trying to initialize some dummy data without success after trying several things
extension DummyTennisPlayer {
static var dummyResults : [DummyTennisPlayer] {
[
DummyTennisPlayer.init(
LastName : "Federer",
FirstName: "Roger",
TN : TournNames.wim // **** this line
,
TS : ["XX", "yy"] /// *** this line
)
]
}
}
解决方案
正如我认为您正在发现的那样,一系列简单的嵌套类型不太可能在这里解决问题。一旦你找到像球员、锦标赛、比赛和查询这样的实体,比如“罗杰·费德勒在今年第三场温布尔登比赛中的表现”,你就成为了使用数据库的候选人,你可以在其中操作一对多和多对多的关系。我不能告诉你使用什么数据库,反正这是一个见仁见智的问题;从你到目前为止所说的来看,SQLite 就足够了(我个人并不是仅仅为了这种事情而喜欢 Core Data)。
推荐阅读
- php - PHP foreach 循环只返回第一项
- css - 使用选择器在 2 个全局 SCSS 之间切换
- javascript - 如何在 Select2 下拉列表中捕获滚动事件?
- etcd - 放置一些值时etcd“不是目录”的结果
- docker - 有没有办法在 Google 的 AI 平台中使用外部编译包进行数据处理?
- java - 使用java 8查找列表中不存在于另一个列表中的元素
- javascript - Javascript:字符串化不适用于对象数组
- sql-server - MSSQL:如何从不同的表中删除重复的列值?
- java - 为什么在 java 中递归实现合并排序时会发生这个 Stackoverflow 异常?
- c++ - 关于使用类型转换优化除法代码的问题