如何向从 Swfit 中的 NSUserDefaults 检索到的字典添加新键 IOS

How to add a new key to the dictionary that is retrieved from NSUserDefaults in Swfit IOS

HI 下面的代码在我尝试执行时抛出异常。我正在尝试向从 NSUserDefaults 检索到的现有字典添加一个新键。 例如:

    var receivedMachineId = "1"
    var equipment = [receivedMachineId: ["make" : "receivedMake",
        "model" : "receivedModel",
        "machineId" : "receivedMachineId",
        "notes": "receivedNotes",
        "status": "receivedStatus"
        ]
    ]

    NSUserDefaults.standardUserDefaults().setObject(equipment, forKey: "equipment")
    if var retrievedDict = NSUserDefaults.standardUserDefaults().dictionaryForKey("equipment")  {
        var myDict = retrievedDict
        print(myDict)
        print(myDict["1"]!["make"])
        myDict["1"]!["newKey"] = "New Value"

    }
  1. 获取词典。将其存储在变量中。
  2. 将您的新数据添加到该变量。
  3. 用变量
  4. 覆盖 "equipment" 的条目

示例:

if let dict = NSUserDefaults.standardUserDefaults().dictionaryForKey("equipment") as? Dictionary<String,Dictionary<String,String>> {
    var myDict = dict
    myDict["new_key"] = "new value"
    NSUserDefaults.standardUserDefaults().setObject(myDict, forKey: "equipment")
}

向字典添加另一个值:

dict["newKey"] = "newValue"

将其与 NSUserDefaults 放在一起:

var receivedMachineId = "1"

var equipment = [receivedMachineId: [
    "make" : "receivedMake",
    "model" : "receivedModel",
    "machineId" : "receivedMachineId",
    "notes": "receivedNotes",
    "status": "receivedStatus"
    ]
]

NSUserDefaults.standardUserDefaults().setObject(equipment, forKey: "equipment")

if var retrievedDict = NSUserDefaults.standardUserDefaults().dictionaryForKey("equipment")  {
    print(retrievedDict)
    equipment[receivedMachineId]!["newKey"] = "newValue"
    NSUserDefaults.standardUserDefaults().setObject(equipment, forKey: "equipment")
    NSUserDefaults().dictionaryForKey("equipment") // show dictionary
}

基本上,您只需将新的 keys/values 添加到字典中,然后将 setObject(修改后的字典)添加回 NSUserDefaults。