【发布时间】:2016-10-04 17:27:05
【问题描述】:
我已经绞尽脑汁好几个小时了,感觉我已经尝试了大多数事情,所以我转向值得信赖的 Stack Overflow!
我有一个来自服务器的数组,这些数组与 unix 时间戳和一个如下所示的值相关:
[[1475511843000,183649999],[1475512143000,183612691],[1475512443000,183503638]]
我曾经简单地将这个变量设置为
var graphPoints:NSArray = []
我现在正在尝试转换为 Swift3 并使用 [[UInt32:Int]]() 指定我有一个包含其他数组的数组,这些数组具有 32 个无符号整数以及之后的整数。无论我尝试了哪种方式,包括标准语法和含糖语法:
[Int:[UInt32:Int]]()
[[UInt32:Int]]()
[[]]()
由于输入问题,允许我访问第二个数组,通常会给出类似于 Type 'Int?' has no subscript members 的错误。
在我对如何格式化数据有发言权之前,数据就是这种格式,所以我无法调整它,任何帮助将不胜感激。
服务器调用如下所示: `Alamofire.request(urlString).responseJSON { 响应 切换响应。结果 { 案例.成功(让数据): 让 json = JSON(数据);
//print("GRAPH DATA POINTS JSON: \(json)")
//some graphs don't contain data so we have to test for null
if !json.isEmpty {
self.graphPoints = json["data"].arrayObject! as! [(timestamp: UInt64, value: Int)]
if self.graphPoints.count > 0 {
self.firstPriceInGraph = self.graphPoints[0][0].doubleValue
self.setupPercentageLabel()
} else {
//no graph data available, hide something?
self.firstPriceInGraph = -1.0
if Helper.__DEBUG { print("NO DATA IN JSON... 1")}
}
} else {
//no graph data available, hide something?
self.firstPriceInGraph = -1.0
if Helper.__DEBUG {print("NO DATA IN JSON... 2")}
}
self.graphView.reloadData()
case .failure(let error):
self.graphPoints = [(timestamp:UInt64, value:Int)]()
self.graphView.reloadData()
print("Get Graph Data - Request failed with error: \(error)")
}
}`
【问题讨论】:
-
你有数组数组,在前两个声明中你告诉它是字典数组尝试一次
[[UInt32]] -
@NiravD 1475511843000 不适合
UInt32。UInt64在这里是更好的选择。 -
看起来 OP 只是想让旧的 Swift 2.2 代码在 Swift 3.0 上运行良好 :) 不幸的是,有时这是不可能的。
-
@StuartP。这就说得通了。请参阅我的更新答案。
-
实际上,我认为这没有帮助。
graphPoints和firstPriceInGraph存在问题:它们的类型错误
标签: arrays swift multidimensional-array swift3 xcode8