我有一个基于文档的应用程序(多个文档,每个文档都有自己的核心数据持久存储)。我正在使用UIManagedDocument
开发它。
每个文档都是一个图纸,我希望能够保存每个图纸的预览(UIImage
)。
由于我想要显示包含所有预览的scrollView,我想我不应该将预览放在数据库中,因此我正在使用UIManagedDocument
所述的其他内容功能{{3} }。
我有几个问题:
参数“absoluteURL”有什么用处
additionalContentForURL:error:
?它没有在示例中使用
我联系了。
如何在不打开文档的情况下检索预览?目前 我这样做:
。
NSString* docName = [[[DocumentStore sharedStore] documentsList]
objectAtIndex:indexPath.row];
NSString* dataDirectory = [FileUtils privateDataDirectory];
NSString *dataPath = [dataDirectory stringByAppendingPathComponent:docName];
NSString *imagePath = [dataPath
stringByAppendingPathComponent:@"AdditionalContent/thumb.png"];
UIImage * preview = [UIImage imageWithContentsOfFile:imagePath];
......但我不确定这是否是最好的方法。
答案 0 :(得分:0)
absoluteURL
中的additionalContentForURL:error:
参数为您提供了附加内容的绝对网址。
对于大多数用例,这不是一个特别必要的参数,因为您实际上并不需要知道这些数据将写入何处,但在具有全局内容管理系统的一些模糊用例中可能很有用。独立于文件(尽管可能不是非常结构)
当前用于检索文档预览的方法应该没问题,只要您实施安全措施,这样如果预览资源不存在于您的路径中,您的应用就不会崩溃或展现未定义的行为无论出于什么原因,都期待它。
获取预览的另一种方法是加载每个文档,初始化它,在文档类中实现readAdditionalContentFromURL:error:
以读取预览并将其放入属性中,然后检索该属性的值并将其用作预览。但是,这需要将每个文档加载到内存中才能检索预览,因此我不建议这样做,因为它会产生严重的性能影响。
有关如何处理UIManagedDocument
中其他内容的一般指南,请参阅this answer至this question。