swift - 在 UserDefaults 中保存对象数组

标签 swift oop nsuserdefaults swiftyuserdefaults

使用 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

最佳答案

您无法将自定义数组保存在 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()
    }
}

关于swift - 在 UserDefaults 中保存对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41395318/

相关文章:

ios - 删除存储在应用程序组中的信息

objective-c - 使用 NSUserDefaults 错误保存隐藏按钮状态

swift - 用于文本叠加的自定义标记 Google map 街景 Xcode

ios - 在数组上使用 NSUserDefaults

c++ - 我应该为我正在包装的结构使用转换运算符吗?

objective-c - plist或NSUserDefaults是否更有效地存储少量数据?

ios - 从类中检索所有 Parse 数据时出错

ios - 'ValidationError' 无法转换为 'Error' ;您的意思是使用 'as!' 强制向下转换吗?

java - 当我们可以使用默认方法和静态方法时,接口(interface)如何提供 100% 抽象?

java - 如何创建启动 Activity 的方法?