【问题标题】:Saving an array of objects in UserDefaults在 UserDefaults 中保存对象数组
【发布时间】:2017-05-14 16:48:50
【问题描述】:

使用 swift 3.0,我正在尝试将一组对象添加到用户默认值中。由于这不是常规的 UserDefault 类型之一,我意识到对象或对象数组(无法确定是哪一个)需要解析为 NSData 类型,然后添加到 UserDefaults。

到目前为止,我的尝试如下:

对象内

func updateDefaults()
{
    let data = NSData(data: MyVariables.arrayList)
    UserDefaults.standard.set(data, forKey: "ArrayList")
}

其中 MyVariables.arrayList 是对象数组。

最后,如果可能的话,最好知道如何从 UserDefaults 中检索它并将其转换为原始的一维对象数组。

谢谢

存储库:https://github.com/Clisbo/ModularProject

【问题讨论】:

标签: swift oop nsuserdefaults swiftyuserdefaults


【解决方案1】:

您无法将自定义数组保存在 NSUserDefaults 中。为此,您应该将它们更改为 NSData 然后将其保存在 NSUserDefaults 这是代码。

var custemArray: [yourArrayType] {
    get {
        if let data = NSUserDefaults.standardUserDefaults().objectForKey("yourKey") as? NSData {
           let myItem = NSKeyedUnarchiver.unarchiveObjectWithData(data) as? yourType
        }
    }
    set {
        let data =NSKeyedArchiver.archivedDataWithRootObject(yourObject);
        NSUserDefaults.standardUserDefaults().setObject(data, forKey: "yourKey")
        NSUserDefaults.standardUserDefaults().synchronize()
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多