如何启用iCloud支持sqlite?

时间:2011-08-09 21:39:53

标签: sqlite icloud

我想为sqlite的包装提供iCloud支持。没有使用coredata。

我想知道如何为它启用iCloud。数据库内容始终更改(用于开票)。此外,如果可以进行某种版本控制将很棒。

我可以用任何样本来做这件事吗?

2 个答案:

答案 0 :(得分:7)

简短的回答是否定的,您需要使用您怀疑的核心数据。 Apple声称sqlite不受支持。

编辑:查看“使用iCloud与数据库连接”下的iCloud that's now in the iOS Application Programming Guide部分

  

只有在您的应用使用时才可以将iCloud与SQLite数据库配合使用   用于管理该数据库的核心数据。访问实时数据库文件   不支持使用SQLite接口的iCloud,很可能   破坏你的数据库。但是,您可以创建基于Core Data的存储   在SQLite上,只要你在设置你的时候遵循一些额外的步骤   核心数据结构。您还可以继续使用其他类型的Core   数据存储 - 即不基于SQLite存储 - 没有任何特殊存储   修改

答案 1 :(得分:7)

您不能将SQLite数据库放在iCloud容器中,因为它可能会损坏。 (当您修改SQLite数据库时,会创建并重命名临时文件,因此如果同步进程开始复制这些文件,您将获得一个损坏的数据库。)

如果您不想迁移到Core Data,您可以执行Core Data的操作:将数据库存储在文档文件夹中,并将事务日志存储在iCould容器中。每次更改数据库时,都会将这些更改添加到日志文件中,以便您可以播放它们并在其他设备上进行相应的更改。

这变得非常复杂:除了正确获取日志/回复逻辑之外,您还需要合并冗余更改并定期将日志折叠为数据库的完整副本。

如果您可以利用应用程序的知识(核心数据必须解决一般情况下的问题),您可能会更容易开发解决方案。例如,您可以将发票保存为云容器中的单独文件(文本,属性列表,XML,JSON等),在数据库更改时将其写出,只有在系统告知您创建或更改时才导入。 / p>

总之,您可以选择迁移到Core Data或自己编写同步解决方案。哪一个最好取决于您的申请细节。