Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在Swift中读取此多维数组?_Arrays_Swift_Multidimensional Array - Fatal编程技术网

Arrays 如何在Swift中读取此多维数组?

Arrays 如何在Swift中读取此多维数组?,arrays,swift,multidimensional-array,Arrays,Swift,Multidimensional Array,我有一个数组,用于存储swift中“块”上的一些次要数据 我以前有三本字典,分别叫做blockNames、blockTypes和blockImages。然而,我想把一切都放在一个地方。我想使用下面的格式,但我假设我可以像这样阅读它块数据[0.0][“图像”]获取块0.0的图像。但是,它将数组定义为双精度数组,并将其中的字典定义为NSObject 这就是我所说的阵列 let blockData = [ // ===== 0.0 - Air ===== 0.0:[ "

我有一个数组,用于存储swift中“块”上的一些次要数据

我以前有三本字典,分别叫做blockNames、blockTypes和blockImages。然而,我想把一切都放在一个地方。我想使用下面的格式,但我假设我可以像这样阅读它<代码>块数据[0.0][“图像”]获取块0.0的图像。但是,它将数组定义为双精度数组,并将其中的字典定义为NSObject

这就是我所说的阵列

let blockData = [
    // ===== 0.0 - Air =====
    0.0:[
        "name":"Air",
        "image":"0.0.png",
        "type":"custom"
    ],
    0.1:[
        "name":"barrier",
        "image":"barrier",
        "type":"custom"
    ],
    // ===== 1.0 - Dirt =====
    1.0:[
        "name":"Dirt - Center",
        "image":"1.0.png",
        "type":"solid"
    ],
    1.1:[
        "name":"Dirt width Grass - Center",
        "image":"1.1.png",
        "type":"solid"
    ],
    1.2:[
        "name":"Dirt width Grass - Left",
        "image":"1.2.png",
        "type":"solid"
    ],
    1.3:[
        "name":"Dirt width Grass - Right",
        "image":"1.3.png",
        "type":"solid"
    ],
    1.4:[
        "name":"Dirt - Left",
        "image":"1.4.png",
        "type":"solid"
    ],
    1.5:[
        "name":"Dirt - Right",
        "image":"1.5.png",
        "type":"solid"
    ],
    1.6:[
        "name":"Dirt with Flat Top - Center",
        "image":"1.6.png",
        "type":"solid"
    ],
    1.7:[
        "name":"Dirt with Flat Top - Left",
        "image":"1.7.png",
        "type":"solid"
    ],
    1.8:[
        "name":"Dirt with Flat Top - Right",
        "image":"1.8.png",
        "type":"solid"
    ],
    1.9:[
        "name":"Dirt - Center",
        "image":"1.9.png",
        "type":"solid"
    ],
    1.11:[
        "name":"Dirt - Bottom Center",
        "image":"1.11.png",
        "type":"solid"
    ],
    ...
    ]
我想阅读如下数组:

let blockID: CGFloat = 0.0

let blockType = blockData[Float(blockID)]["type"]

谢谢。

问题似乎是,您将从
块数据[0.0]
中获得一个可选值作为回报
您需要使用
if let
语句或强制展开来展开该可选项

let blockData = [
    // ===== 0.0 - Air =====
    0.0:[
        "name":"Air",
        "image":"0.0.png",
        "type":"custom"
    ],
    0.1:[
        "name":"barrier",
        "image":"barrier",
        "type":"custom"
    ],
    // ===== 1.0 - Dirt =====
    1.0:[
        "name":"Dirt - Center",
        "image":"1.0.png",
        "type":"solid"
    ],
    1.1:[
        "name":"Dirt width Grass - Center",
        "image":"1.1.png",
        "type":"solid"
    ],
    1.2:[
        "name":"Dirt width Grass - Left",
        "image":"1.2.png",
        "type":"solid"
    ]
]

blockData[0.0]!["type"]

在swift 2.0中工作得非常好

如果元素不是按位置标识的,它就不是数组。@ScottHunter我相信OP来自PhP,其中(有序的)字典被称为数组(我知道这很奇怪)@Kametrixom在回答您的评论时,我确实来自PhP。但是,您知道如何将字典声明为String:String而不是NSObject吗?数组的声明似乎是[Double:NSObject],因此我无法使用字符串获取字典。有什么方法可以解决这个问题吗?如果让data=blockData[0.0]为,则键入cast您的NSObject
?[String:String]
有没有办法在第一个declarton中强制转换此值?我有一个问题,因为我使用float“1.1,1.2”作为变量,我无法使用double来获取数据。有办法解决这个问题吗?