这些天我自学Swift并且无法理解如何更新存储在数组中的字典中的值。该数组包含使用JSON从文件读取的字典(我正在使用SwiftyJSON)。 JSON文件如下所示:
{
"test2" : [
{
"files" : "203",
"url" : "Optional(\"\/Users\/heisan\/test\/\")",
"date" : "April 6, 2015 at 15:23:40 EDT"
}
]
}
字典中的每个键:值对由String:Array组成,其中Array再次由String:String字典组成。我更新特定键的内容的功能如下所示:
@objc func addOptionForKey(key: String, date: NSDate, url: NSURL, files: NSNumber)-> Bool {
let dictData: NSData? = self.createDataOfDictionary()
if (dictData != nil) {
let json = JSON(data: dictData!)
for (localkey: String, var subJson: JSON) in json {
var backups: Array = [Dictionary<String,AnyObject>]()
var restores = subJson.arrayValue
for restore in restores {
let innerDict: [String:String] = ["url":restore["url"].stringValue,
"files":restore["files"].stringValue,
"date":restore["date"].stringValue]
backups.append(innerDict)
}
self.restoreDict[localkey]=backups
}
return true
}
这里,restoreDict属性定义为
self.restoreDict = String:[AnyObject]
当我尝试更新特定键的数组时,函数崩溃:
self.restoreDict [localkey] = backups
我确信我在这里做了一些业余错误,但是我们将非常感谢正确的方向。谢谢。 Ť
更新:我的问题与我的Xcode和Swift版本有关。当我切换到Xcode 6.3 + Swift 1.2以及不再使用swiftJSON时(由于Swift 1.2在处理JSON方面有很多改进),一切都按预期工作。
答案 0 :(得分:1)
var restoreDict = [String:[String:AnyObject]]()
let test2 = ["files" : 203, "url" : "blah", "date" : "April 6, 2015 at 15:23:40 EDT"]
restoreDict["local"] = test2
println(restoreDict)
// prints "[local: [files: 203, url: blah, date: April 6, 2015 at 15:23:40 EDT]]"