Ios 以默认值存储词典

Ios 以默认值存储词典,ios,xcode,dictionary,nsuserdefaults,Ios,Xcode,Dictionary,Nsuserdefaults,关于这个问题,我读了很多关于堆栈溢出的文章,即、、和。然而,我似乎找不到有效的解决方案 有人慷慨地提供了对他或她有效的代码片段,但对我无效,我也不知道为什么。以下是我尝试过的: var addressDict = Dictionary<Int, Array<String>>() addressDict[3] = ["string1", "string2"] //some example values let data = NSKeyedArchiver.a

关于这个问题,我读了很多关于堆栈溢出的文章,即、、和。然而,我似乎找不到有效的解决方案

有人慷慨地提供了对他或她有效的代码片段,但对我无效,我也不知道为什么。以下是我尝试过的:

var addressDict = Dictionary<Int, Array<String>>()
    addressDict[3] = ["string1", "string2"] //some example values
    let data = NSKeyedArchiver.archivedDataWithRootObject(addressDict) //archiving
    let defaults = NSUserDefaults.standardUserDefaults()
    defaults.setObject(data, forKey: "address") //storing
    if let data2 = defaults.objectForKey("address") as? NSData { //reading
        let addressDict2 = NSKeyedUnarchiver.unarchiveObjectWithData(data2) //unarchiving
        print(addressDict2)
    }

我运行了这段代码。然后我注释掉addressDict[3]=[string1,string2],然后再次运行该应用程序。但是,它似乎没有保存到内存中,因为当这行代码执行printaddressDict2时,字典中没有数据。有人有办法解决这个问题吗?提前感谢您的帮助!:

尝试在setobject之后同步用户默认值您是否也对保存行进行了注释?或者您希望在保存一个空字典后,您将读取上一个值?@Rick van der Linde我尝试通过NSUserDefaults.standardUserDefaults.synchronize after setObject同步用户默认值,但没有成功@很抱歉,我不太清楚你的意思。你删除了defaults.setObjectdata,forKey:address//storing这行了吗?你实例化了一个新变量,但它是空的。然后将其写入默认值,然后读取。在为其编写空词典后,默认值是什么