在NSUserDefault中存储元组数组

时间:2019-06-03 10:45:45

标签: ios nsarray nsuserdefaults nskeyedunarchiver

我正在尝试在NSUserDefaults中存储一个元组数组,以便我的Sharing Extension和iOS主应用可以访问相同的特定数据结构。

该数组如下所示:

var contentEntries: Array<(Link: String, Note: String)> = []

在扩展名中,我正在像这样向数组添加元素:

contentEntries.append((url.absoluteString!, commentText!))

而且,在保存到默认系统之前,尝试使用NSKeyedArchiver编码为数据:

let encodedData = NSKeyedArchiver.archivedData(withRootObject: self.pinchContentEntries)
self.userDefaults?.set(encodedData, forKey: self.userDefaultsKey)
self.userDefaults?.synchronize()

在应用程序方面,我的计划是让以下代码获取存储的变量并取消存档:

    let data = userDefaults?.object(forKey: userDefaultsKey)
    extensionEntries  = NSKeyedUnarchiver.unarchiveObject(with: (data! as! NSData) as Data) as! Array<(Link: String, Note: String)>

从其他一些问题(encodeWithCoder: unrecognized selector sent to instance到(encodeWithCoder: unrecognized selector sent to instance)看来,可以使用NSCodable来解决这个问题,但看起来您的对象必须是类或为此的结构;但这对于我的特定数据结构似乎没有任何意义。

有人有指针吗?

0 个答案:

没有答案