【问题标题】:Inject variable as Array parameter将变量作为数组参数注入
【发布时间】:2020-05-28 15:43:31
【问题描述】:

我有变量:

// Russia, US, and other country, its dynamical changing
var mytest = someTextLabel.text 

我需要在 JSON 解析后将“mytest”作为字典参数注入:

// compile error, dailyStat don't have member 'mytest'
self.myArray = dailyStat.mytest.map{ Double($0.recovered) } 

dailyStat 具有以下结构:

struct dailyStat: Codable {
    let france: [CovidNums]
    let russia: [CovidNums]
    let us: [CovidNums]
    let brazil : [CovidNums]
    let uk: [CovidNums]
    let spain: [CovidNums]

    enum CodingKeys: String, CodingKey {
        case us = "US"
        case russia = "Russia"
        case france = "France"
        case brazil = "Brazil"
        case uk = "United Kingdom"
        case spain = "Spain"
    }
}

struct CovidNums: Codable {
    let date: String
    let confirmed, deaths, recovered: Int
}

我不想用 case switch:

switch mytest {
    case "Russia"
        self.myArray = dailyStat.russia.map{ Double($0.recovered) }
    case "US"
        self.myArray = dailyStat.us.map{ Double($0.recovered) }
    ...

因为我有 100 个国家

【问题讨论】:

  • mytestDailyStat 中在哪里?
  • mytest 它唯一的变量,我需要使用这个变量作为数组参数
  • 您的dailyStat 对象具有每个国家/地区的属性?使用[String, [CovidNums]] 字典会不会更好,或者如果您想输入安全,您可以创建所有国家/地区的枚举
  • 也许你应该使用[String: [CovidNums]] 字典而不是DailyStat。或[CountryEnum: [CovidNums]]。这样您就可以使用键进行下标,并且当国家/地区列表发生变化时,您无需修改​​结构。
  • 很快会怎样?

标签: arrays swift xcode


【解决方案1】:

您最好将所有国家/地区写入一个变量:

var countries: Dictionary<String: CovidNums>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 2011-06-12
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多