我对Swift很新(并且可以做基本的Objective C但不多于此)。我有一个词典,我试图将它加载到一个数组中。这是我的代码:
let resultArray = NSArray(contentsOfFile: bundlePath)!
var swiftArray = [Dictionary<String,String>]()
for (var i = 0; i < resultArray.count; i++){
swiftArray.addObject(resultArray.objectAtIndex(i))
}
我知道resultArray
已正确创建。但是,此代码的最后一行给出了错误[(Dictionary<String,String>)] does not have a member named 'addObject'.
如何将这些词典加载到swiftArray
?
感谢您的帮助,伙伴和女士。
答案 0 :(得分:2)
使用append
方法代替addObject
。 Swift数组没有addObject
方法。
swiftArray.append(resultArray.objectAtIndex(i) as Dictionary<String, String>)
或者只是将NSArray
转换为快速数组
var swiftArray = resultArray as [AnyObject] as [Dictionary<String, String>]
答案 1 :(得分:1)
使用Swift:我使用plist来存储我的字典数组,使用NSMutableArray加载它。我展示了一种在for循环中获取下面数据的方法。
// globals
var myArray = NSMutableArray()
var SamplePath = NSString()
SamplePath = NSBundle.mainBundle().pathForResource("MyFile", ofType: "plist")!
myArray = NSMutableArray(contentsOfFile: SamplePath as String)!
var i = 0
for myElement in myArray {
println(myArray[i]["Title"]as! String, myArray[i]["start"]as! Int, myArray[i]["detail"]as! String)
i++
}
当我需要进行额外的操作时,我创建了一个临时结构来加载单个Dictionary的值,但是使用NSMutableArray的setValue函数可以将简单的东西直接写入数组元素:
myArray[Index].setValue(b, forKey:"Title").
答案 2 :(得分:0)
你应该能够简单地利用NSArray桥接:
var swiftArray = NSArray(contentsOfFile: file) as! [Dictionary<String,String>]
例如:
39> arNS
$R9: NSArray = "2 values" {
[0] = 1 key/value pair {
[0] = {
0 = (instance_type = 0x0000000102002da0 )
1 = (instance_type = 0x0000000000000003)
}
}
[1] = 1 key/value pair {
[0] = {
0 = (instance_type = 0x00000001020060e0 )
1 = (instance_type = 0x0000000000000003)
}
}
}
40> var arSW = arNS as! [[String:Int]]
arSW: [[String : Int]] = 2 values {
[0] = {
[0] = {
key = "abc"
value = 1
}
}
[1] = {
[0] = {
key = "xyz"
value = 2
}
}
}
注意:我赞赏你离开NSArray。如果您发现自己需要在Swift中处理NSArray方法,可以考虑添加Swift Array扩展来实现NSArray方法,但立即转换为Array。