我正在尝试在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
来解决这个问题,但看起来您的对象必须是类或为此的结构;但这对于我的特定数据结构似乎没有任何意义。
有人有指针吗?