2015-04-06 106 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]]"