4

我有一个基于文档的应用程序(多个文档,每个文档都有自己的核心数据持久存储)。我正在使用UIManagedDocument它来开发它。

每个文档都是一个绘图,我希望能够保存UIImage每个绘图的预览 ( )。

因为我想显示一个带有所有预览的滚动视图,我想我不应该将预览放在数据库中,所以我正在使用此处UIManagedDocument描述的附加内容功能。

我有一些问题:

  • 参数“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];

...但我不确定这是否是最好的方法。

4

1 回答 1

0
  1. absoluteURLin 参数为您提供将additionalContentForURL:error:写入附加内容的绝对 URL。

    对于大多数用例来说,这不是一个特别必要的参数,因为您实际上并不需要知道这些数据将被写入到哪里,但在某些晦涩难懂的用例中,它可能作为标识符有用,因为它具有独立于全球内容管理系统的全局内容管理系统。文件(虽然这可能不是很结构)

  2. 您当前用于检索文档预览的方法应该没问题,只要您实施保护措施,以便您的应用程序不会在您期望的路径中不存在预览资源时崩溃或表现出未定义的行为,例如不管什么原因。

    获取预览的另一种方法是加载每个文档,对其进行初始化,readAdditionalContentFromURL:error:在文档类中实现以读取预览并将其放入属性中,然后检索该属性的值并将其用作预览。但是,这需要将每个文档加载到内存中才能检索预览,因此我不建议这样做,因为它会严重影响性能。

有关如何处理附加内容的一般指南UIManagedDocument,请参阅此问题答案

于 2013-05-11T06:11:49.360 回答