2015-04-06 57 views
0

我在教導自己Swift這些天,並且無法理解如何更新存儲在數組中的字典中的值。該數組由使用JSON從文件讀取的字典組成(我正在使用SwiftyJSON)。 JSON文件看起來是這樣的:使用Swift更新字典數組中的值

{ 
    "test2" : [ 
    { 
     "files" : "203", 
     "url" : "Optional(\"\/Users\/heisan\/test\/\")", 
     "date" : "April 6, 2015 at 15:23:40 EDT" 
    } 
    ] 
} 

每個鍵:值對詞典中包含字符串:數組,其中數組再次由字符串:字符串字典。我的用於更新特定密鑰對內容函數看起來像這樣:

@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 =字符串:[AnyObject]

當我嘗試更新我的陣列的特定鍵時,該函數崩潰:

self.restoreDict [l ocalkey] =備份

我確定我在這裏做了一些業餘的錯誤,但在正確的方向踢一個非常感謝。謝謝。 T

更新:我的問題竟然與我的Xcode和Swift版本有關。當我切換到Xcode 6.3 + Swift 1.2以及使用swiftJSON(因爲Swift 1.2在處理JSON方面有很多改進)時,所有功能都按預期工作。

回答

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