【问题标题】:Correct syntax for reading value in nested array?在嵌套数组中读取值的正确语法?
【发布时间】:2017-01-08 09:11:04
【问题描述】:

如果有人能帮我解决语法问题。在

中读取 Int 的正确方法是什么

数组 -> 字典 -> 数组 -> 字典 -> 数组 -> [0]

我是 Swift 3 的新手,无法提取变量。任何帮助将不胜感激。我已经尝试了一些类似的东西:

let sen = dict["senzu"] as? [[String:Any]]
  let sen1 = dfa?[0][0]["green"] as? Any

【问题讨论】:

    标签: ios arrays swift dictionary


    【解决方案1】:

    为了更清楚,我分开了:

    数组 -> 字典 -> 数组 -> 字典 -> 数组 -> [0]

    分层次,假设最后一个数组是05级,第一个数组是01级,如下:

    // Array of Ints
    var arrayLevel_05 = [1, 2, 3, 4]
    
    // Dict of arrays of ints
    var dictLevel_04: [String: [Int]] = ["myArray01": arrayLevel_05]
    
    // Array of dicts of arrays of ints
    var arrayLevel_03:[[String: [Int]]] = [dictLevel_04]
    
    // Dict of arrays of dicts of arrays of ints
    var dictLevel_02: [String: [[String: [Int]]]] = ["myArray02": arrayLevel_03]
    
    // Array of dict of arrays of dicts of arrays of ints
    var arrayLevel_01:[[String : [[String : [Int]]]]] = [dictLevel_02]
    

    所以,为了获取arrayLevel_05 中的整数值:

    let one = arrayLevel_01[0]["myArray02"]?[0]["myArray01"]?[0]
    let tow = arrayLevel_01[0]["myArray02"]?[0]["myArray01"]?[1]
    let three = arrayLevel_01[0]["myArray02"]?[0]["myArray01"]?[2]
    

    请注意,它们是可选的,因为您正在从字典中读取值,如果您非常确定您将总是获得一个值,您可以替换 ?使用!(强制展开)如下:

    let one = arrayLevel_01[0]["myArray02"]![0]["myArray01"]![0]
    let tow = arrayLevel_01[0]["myArray02"]![0]["myArray01"]![1]
    let three = arrayLevel_01[0]["myArray02"]![0]["myArray01"]![2]
    

    或者按照可选绑定的方式:

    if let arrayLevel03 = arrayLevel_01[0]["myArray02"], let arrayLevel05 = arrayLevel03[0]["myArray01"] {
        let one = arrayLevel05[0]   // 1
        let tow = arrayLevel05[1]   // 2
        let three = arrayLevel05[2] // 3
    }
    

    有关什么是可选项的更多信息,请查看Apple Documentation(可选部分)。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多