3

我想在 Mac OS X 中创建一个并在 iOS 7 上NSPersistentDocument将此文档作为 a 阅读。UIManagedDocument

这可能吗?

两种文件格式是否兼容?

谢谢!

4

2 回答 2

1

有趣的问题 - 我可以确认基本核心数据文件是兼容的。我有一个 Mac 应用程序和一个 iOS 应用程序使用使用 iCloud 同步的相同文件。该应用程序是一个基于文档的应用程序,目前我一直将实际的数据库文件存储在 iCloud 中,以便整个文件由 iCloud 同步。

这可以正常工作,但很明显,如果用户在两台设备上打开文件并且不小心保存和关闭,则他们的更改可能会被覆盖。

Apple 已批准使用标准 NSPersistentDocument 来创建和保存文件的 Mac 应用程序。不幸的是,他们拒绝了 iOS 应用程序,并以不符合其数据存储指南的一些晦涩的说法拒绝了这些应用程序,并表示如果需要将文档备份到 iCloud,则必须将文档存储在 /Documents 目录中。好吧,如果用户选择了 iCloud,那么我将文件存储在 API 调用提供的 iCloud 位置。

无论如何,我仍在等待他们关于这种方法的具体错误之处的回复,因为它似乎与 Pages 和其他基于文档的应用程序使用的相同。

如果我尝试使用 UIManagedDocument,那么 iOS 会创建一个文件夹结构并将数据库存储在这个文件夹结构中。Mac 应用程序 File->Open 对话框然后显示这个文件夹结构以及一个基本上看起来像普通 sqlite 文件的文件。但也许 OS X 10.8.4 没有实现最新的 iCloud/Core Data 东西——谁知道呢……

编辑这里是代码示例和视频的链接,显示使用 Core Data 和 iCloud 进行 OSX 和 iOS 应用程序集成。http://ossh.com.au/design-and-technology/software-development/uimanageddocument-icloud-integration/

于 2013-10-03T12:00:25.623 回答
1

我同意这绝对是可能的。我在 OS X 10.8/10.9/10.10 上使用 NSPersistent 文档,采用二进制核心数据格式(无包装器 - 普通文件)。在 iOS 上,我使用的是 UIDocument。核心数据在两种环境中都能正常工作。

苹果表示 NSPersistentDocument 不支持 iCloud。说不完全支持更正确。大多数 NSDocument 支持(包括从 10.8 开始的 iCloud 文档库访问)都可以使用。处理开放作品中的冲突文件。

您不能启用自动保存(在 iCloud 设计指南中列为 iCloud 文档的要求)。自动保存是异步工作的,NSPersistentDocument 绝对不支持。

因此,如果您处理文件保存和冲突,则可以使用 NSPersistent 文件。有一些怪癖:例如,如果 iCloud 更改到达 OS X 上的打开文档,正常的 NSDocument 响应将是自动重新打开文档。这不会发生 - 在您即将保存文件之前,不会发出文件已更改的警告。但至少有一个警告。在 iOS 上,使用 UIDocumentStateChangedNotification 更容易检测发生的更改。

于 2015-09-11T02:23:29.990 回答