Swift 在UserDefaults中保存对象数组

Swift 在UserDefaults中保存对象数组,swift,oop,nsuserdefaults,swiftyuserdefaults,Swift,Oop,Nsuserdefaults,Swiftyuserdefaults,使用swift 3.0,我尝试将对象数组添加到用户默认值中。由于这不是常规的UserDefault类型之一,我意识到对象或对象数组(无法确定是哪一个)需要解析为NSData类型,然后添加到UserDefaults 到目前为止,我的尝试如下: 在对象内部 func updateDefaults() { let data = NSData(data: MyVariables.arrayList) UserDefaults.standard.set(data, forKey: "Arr

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

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

在对象内部

func updateDefaults()
{
    let data = NSData(data: MyVariables.arrayList)
    UserDefaults.standard.set(data, forKey: "ArrayList")
}
其中MyVariables.arrayList是对象数组

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

谢谢


存储库:

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

也许这会对你有帮助你试过吗?检查这一点,穆塞尔看起来很有帮助,但我不理解objective-C,尽管如此,谢谢。Muhammad我找了很长时间,谢谢,看起来很有帮助(不知道为什么在我搜索它的时候它没有出现…)我已经尝试了其中一些,但似乎没有任何效果,如果有人能在主描述的链接中查看我的程序,我将非常感激