下面我有一个NSMutableArray类型的常量dict
,用于存储从JSON中提取的数据。我已经测试过,在引用变量name
时,我能够提取出我需要的东西。
虽然我知道附加一个普通数组会是myArrayValue.append("String")
,但是我用我的2D数组尝试了相同的方法它不起作用。
我对Swift2编程很新,请详细解释。提前谢谢!
let dict: NSMutableArray!=(try! NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers)) as! NSMutableArray
var arrayObject : [AnyObject]
var arrayName : [[String]] = [[]]
var name : String
for var x=0; x<dict.count; x++ {
arrayObject = dict[x].allValues
for var y=0; y<5; y++ {
name = arrayObject[y].description as String
arrayName[x][y].append(name)
}
}
答案 0 :(得分:2)
我不会自己修复你的代码,工作太多了,我只是告诉你需要什么:
如果你实际上不需要它们,你不想再使用Foundation的对象,使用Swift数组。
不要将“dict”称为数组。
请勿强行打开您的值...使用if let
等技术安全展开。
请勿强制使用try!
,请使用Do-Catch和Try,并处理错误。
如果您不需要此功能,请不要使用MutableContainers
。使用空数组代替传递无选项。
不要用不需要用括号括起来的括号内包裹。
当您可以使用像for item in array { print(item) }
这样的Swift范例时,请不要使用手动索引循环。
arrayName[x][y]
为零,则 arrayName[x]
无效。
完成这些修复和改进后,您当前的问题将会消失,因为您的代码将更易于遵循和维护。
答案 1 :(得分:0)
您的帖子难以阅读,您没有很好地解释您的问题,我想它应该被低估。更新您的问题,如果我的答案不正确,希望,这有帮助:
let JSONDict: [[String: AnyObject]] = [["name" : "value1"], ["name" : "value2"]];
var arrayName = [String]()
for dict in JSONDict {
if let value = dict["name"] as? String {
arrayName.append(value)
}
}