Arrays Swift 3多维数组,在Swift 2.2及以前版本中使用

Arrays Swift 3多维数组,在Swift 2.2及以前版本中使用,arrays,swift,multidimensional-array,swift3,xcode8,Arrays,Swift,Multidimensional Array,Swift3,Xcode8,我已经绞尽脑汁几个小时了,感觉我已经尝试了大多数事情,所以我转向可靠的堆栈溢出 我有一个来自与unix时间戳相关的服务器的数组和一个如下所示的值: [[1475511843000183649999]、[1475512143000183612691]、[1475512443000183503638] 我过去只是将这个变量设置为 var图点:NSArray=[] 我现在尝试转换为Swift3,并使用[[UInt32:Int]]()指定我有一个包含其他数组的数组,这些数组包含32个无符号整数以及一个整

我已经绞尽脑汁几个小时了,感觉我已经尝试了大多数事情,所以我转向可靠的堆栈溢出

我有一个来自与unix时间戳相关的服务器的数组和一个如下所示的值:

[[1475511843000183649999]、[1475512143000183612691]、[1475512443000183503638]

我过去只是将这个变量设置为
var图点:NSArray=[]

我现在尝试转换为Swift3,并使用
[[UInt32:Int]]()
指定我有一个包含其他数组的数组,这些数组包含32个无符号整数以及一个整数。无论我以何种方式尝试包括标准语法与糖化语法:

[Int:[UInt32:Int]]()

[[UInt32:Int]]()

[[]]()

由于键入问题,允许我访问第二个数组,通常会出现类似于
类型“Int?”没有下标成员的错误

在我决定如何格式化数据之前,数据就是这种格式的,所以我无法调整它,任何帮助都将不胜感激

服务器调用如下所示: `Alamofire.request(urlString).responseJSON{response in 开关响应。结果{ 案例.成功(让数据): 让json=json(数据)

尝试Andrey Gordeev的答案时

这个怎么样:

let array = [[UInt64]]() 

您试图通过
[Int:[UInt32:Int]]()
[[UInt32:Int]]()
定义的不是数组数组。第一个是字典,其中值是另一个字典。第二个是字典数组

PS:正如Alexander Momchilov提到的,最好将您的数据包装到
[(UInt64,Int)]
这个怎么样:

let array = [[UInt64]]() 

您试图通过
[Int:[UInt32:Int]]()
[[UInt32:Int]]()
定义的不是数组数组。第一个是字典,其中值是另一个字典。第二个是字典数组

PS:正如Alexander Momchilov提到的,最好将数据包装到
[(UInt64,Int)]

我现在正尝试转换为Swift 3,并使用
[[UInt32:Int]]()
指定我有一个数组,其中包含其他数组,这些数组包含32个无符号整数以及一个整数

这根本不是它的意思。
[[UInt32:Int]]()
是:
Array.init()

拥有两种类型的数组(如
UInt32
Int
)的唯一方法是让数组存储这两种类型的超级类型。在这种情况下,
UInt32
Int
都与
Integer
协议一致,因此您可以将
UInt32
Int
存储在
协议中rray
。但这相当糟糕,因为它需要您不断地从
整数
显式向下转换为
UInt32
Int
。这引入的间接转换也会带来性能成本

实现类似功能的更好方法是存储UInt32和Int的元组:

let graphPoints: [(UInt32, Int)] = [
    (1475511843000, 183649999),
    (1475512143000, 183612691),
    (1475512443000, 183503638)
]
但是,这甚至不起作用,因为
1475511843000
太大,无法在
UInt32
中停止,其最大值为
4294967295
UInt32.max

我现在正尝试转换为Swift 3,并使用
[[UInt32:Int]]()
指定我有一个数组,其中包含其他数组,这些数组包含32个无符号整数以及一个整数

这根本不是它的意思。
[[UInt32:Int]]()
是:
Array.init()

拥有两种类型的数组(如
UInt32
Int
)的唯一方法是让数组存储这两种类型的超级类型。在这种情况下,
UInt32
Int
都与
Integer
协议一致,因此您可以将
UInt32
Int
存储在
协议中rray
。但这相当糟糕,因为它需要您不断地从
整数
显式向下转换为
UInt32
Int
。这引入的间接转换也会带来性能成本

实现类似功能的更好方法是存储UInt32和Int的元组:

let graphPoints: [(UInt32, Int)] = [
    (1475511843000, 183649999),
    (1475512143000, 183612691),
    (1475512443000, 183503638)
]

但是,这甚至不起作用,因为
1475511843000
太大,无法在
UInt32
中停留,其最大值为
4294967295
UInt32.max
)。

正如您所说,这是其他
数组的
数组
将创建
字典的
数组
,因为
[UInt32:Int]
是一个
字典
,其中
UInt32
作为键,
Int
作为值

[Int:[UInt32:Int]]()
Swift数组只包含一种类型的元素,因此您可以执行
[[Integer]]
Integer
UInt32
Int
都符合的协议。然后,在访问时,如果您希望将它们转换为
UInt32
Int
,则必须显式转换为
UInt32


然后,您还可以将该
[[Integer]]
转换为
[(UInt32,Int)]
,一个包含
UInt32
Int

的元组的
数组
,正如您所说,这是其他
数组的
数组(
[[UInt32:Int]])()
将创建
字典的
数组
,因为
[UInt32:Int]
是一个
字典
,其中
UInt32
作为键,
Int
作为值

[Int:[UInt32:Int]]()
Swift数组只包含单一类型的元素,因此您可以执行
[[Integer]]
Integer
UInt32
Int
都符合的协议。然后在访问时,您必须
[(UInt32, Int)]
theArray[3].0 // get the timestamp of the fourth item
theArray[7].1 // get the Int value of the eighth item
[UInt32: Int]