使用Swift更新字典数组中的值

时间:2015-04-06 19:58:39

标签: json macos cocoa swift

这些天我自学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方面有很多改进),一切都按预期工作。

1 个答案:

答案 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]]"