具有自动保存功能的鞋盒/库应用程序OS X Lion中的版本

时间:2011-07-31 12:31:19

标签: macos core-data versions osx-lion autosave

我们有一个鞋盒式的应用程序,我们希望在Lion中成为一流的公民。这意味着集成Auto-Save&版本等等。目前我们没有以文档为中心的模型,我们只使用普通的核心数据堆栈。

UIPersistentDocument提供了一种非常简单的方法来集成Auto-Save& amp;版本和我看到两个选项可以选择与新API集成:

  1. “滥用”NSPersistentDocument用于我们的鞋盒式应用程序。从技术上讲,它将是一个基于文档的应用程序,但用户界面仍然是相同的iPhoto类库。这在概念上没有多大意义,但我们会免费获得许多功能。
  2. 保留当前的纯Core数据堆栈并实现Auto-Save&手动版本。
  3. 我听到苹果公司代表对我们应采取的方法提出的矛盾意见,在开始实施之前澄清事情会很棒。虽然我认为1.不应该使用它也很诱人,因为我们可以免费获得很多东西。我甚至找不到关于手动实现Auto-Save& amp;核心数据应用程序中的版本。

    我真的倾向于使用1.但我看到了一些问题:

    • 在使用版本和只有一个数据库文件时,我担心文件系统级别的冲突。我找不到任何关于这个主题的文档。
    • 浏览“空间”时,我担心版本中的性能问题。
    • 我们不能仅强制执行一个open数据库实例,因为Versions必须打开多个实例。我担心副作用和并发问题。 从概念上讲,它看起来像一个黑客,我不喜欢黑客。

    如果我们只想集成iCloud同步,我肯定不会考虑为我们的应用程序使用以文档为中心的模型,因为Core Data直接支持它。如果我们坚持目前的非基于文档的范例,我最担心的是开发人员的开销。

    您是否有任何建议或想法如何将鞋盒应用程序集成到新的Lion世界中?

1 个答案:

答案 0 :(得分:3)

我担心你被迫使用第一个选项。版本在NSDocumentController * sic *中实现,因此您必须使用某种NSDocument来获取版本之外的任何内容。我想想你还需要在NSWindowController中将你的应用程序窗口添加到该文档中,以便在顶部获得漂亮的小弹出菜单。问题是版本或多或少是一个完全不透明的特征......

但是有一个问题你必须自己回答:你想在应用程序的哪些部分加入版本?在恢复数据时,将所有放在一个文件中真的有意义吗?版本还原(除了复制和粘贴)在文件系统级别上发生。因此,总是让所有东西一次恢复真的有意义吗?如果您的答案是否定的,您甚至可能需要将模型分割成多个较小的文件......

在下一个主要版本发布之前,不要指望这里有所改进。这就是我从工程师的评论中猜到的......