我知道我可以使用下面的代码对文件进行编码/解码,以便通过UIDocumentBrowserViewController从UIDocumentBrowserViewController保存/加载文件,如Apple的2017年WWDC所述。
class Document: UIDocument
{
override func contents(forType typeName: String) throws -> Any
{
return NSKeyedArchiver.archivedData(withRootObject: myRootObject)
}
override func load(fromContents contents: Any, ofType typeName: String?) throws
{
guard let data = contents as? data else { return }
guard let rootObject = NSKeyedUnarchiver.unarchiveObject(with: data) as? MyRootObject else { return }
myRootObject = rootObject
}
}
但是,上面的代码对于较大的文件(300MB +)和更复杂的对象图是无效的,这是我的应用程序的情况。
我认为有必要实施某种增量保存。但是,我不知道如何实现这一目标,也找不到有关该主题的任何教程或文档。另外,NSKeyedArchiver似乎是一种较慢的选择,因此我应该使用其他方式进行增量保存吗?什么是实现保存/加载的好/快速方法?