如何将其他内容保存到UIManagedDocument文件包中?
-
27-10-2019 - |
题
解密 Apple的文档时遇到很多麻烦UIManagedDocument
,特别是以下方法:
-
- (id)additionalContentForURL:(NSURL *)absoluteURL error:(NSError **)error
-
- (BOOL)readAdditionalContentFromURL:(NSURL *)absoluteURL error:(NSError **)error
-
- (BOOL)writeAdditionalContent:(id)content toURL:(NSURL *)absoluteURL originalContentsURL:(NSURL *)absoluteOriginalContentsURL error:(NSError **)error
是否有人成功地将其他内容保存到其UIManagedDocument包内的“其他内容”目录中?我希望使用UUID作为文件名(具有正确的文件扩展名)将平直的图像(PNG,JPEG等)和视频(m4v等)保存到此目录中,并将对这些单个文件的引用存储为
NSString
文件路径我的持久存储。
解决方案
要访问 Apple DTS ,以帮助我理解本课程。我在这里分享了他们为我提供帮助的一些示例(略有修改)。
好的,所以基本上它是这样工作的:子类UIManagedDocument
,并实现以下方法(其中extraInfo
属性只是在我们的子类上实现的NSDictionary):
通用标签
UIManagedDocument
会在需要时调用这些方法,自动将需要保存的内容保存到AdditionalContent
目录中的文档包中。
如果您需要强制保存,只需在您的UIManagedDocument
实例上调用以下命令即可:
通用标签
目前,我还没有将其用于图像和视频-但该示例应足以使您脱颖而出。
其他提示
-additionalContentForURL:error的文档:指示返回的nil应该表示错误。 通用标签
我出于另一个目的重写了-writeContents:andAttributes:safelyToURL:forSaveOperation:error:
(在第一次保存新文档时做了一些事情),并且调用super会调用NSException,因为contents
的值为nil,而不是UIManagedDocument所期望的NSDictionary。嗯。
您知道的越多...
P.S。我想这取决于一天中使用-writeContents:andAttributes:...的时间。...它曾经引发异常,抱怨期望NSDictionary,但是后来引发异常,抱怨我没有将其传递给NSData。我的眉毛无法像现在一样像Spock一样扬起。