UIManagedDocument和其他内容

时间:2013-01-27 09:55:55

标签: objective-c core-data uimanageddocument

我有一个基于文档的应用程序(多个文档,每个文档都有自己的核心数据持久存储)。我正在使用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];

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

1 个答案:

答案 0 :(得分:0)

  1. absoluteURL中的additionalContentForURL:error:参数为您提供了附加内容的绝对网址。

    对于大多数用例,这不是一个特别必要的参数,因为您实际上并不需要知道这些数据将写入何处,但在具有全局内容管理系统的一些模糊用例中可能很有用。独立于文件(尽管可能不是非常结构)

  2. 当前用于检索文档预览的方法应该没问题,只要您实施安全措施,这样如果预览资源不存在于您的路径中,您的应用就不会崩溃或展现未定义的行为无论出于什么原因,都期待它。

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

  3. 有关如何处理UIManagedDocument中其他内容的一般指南,请参阅this answerthis question