2011-08-09 44 views
6

我想为我的包装sqlite提供iCloud支持。不使用coredata。如何启用iCloud支持sqlite?

我想知道如何启用iCloud。数据库内容一直都在更改(用于开票)。此外,如果有可能有某种版本将是伟大的。

存在我可以用来做这个的任何样品吗?

回答

6

简短的回答是否定的,您需要使用核心数据。苹果已经声明,sqlite不受支持。

编辑:退房节上iCloud that's now in the iOS Application Programming Guide下结合数据库

使用的iCloud使用SQLite数据库使用的iCloud才可能应用程序使用 核心数据来管理数据库。访问 中的实时数据库文件不支持使用SQLite接口的iCloud,并且可能会损坏数据库。但是,只要在设置 核心数据结构时执行一些额外步骤,就可以在SQLite上创建基于 的Core Data存储。您也可以继续使用其他类型的Core 数据存储 - 即不基于SQLite的存储 - 没有任何特殊的 修改。

+0

哪里有苹果说的? – mamcx

+0

我刚刚编辑我的帖子,以包括来源 – kris

7

您不能只将SQLite数据库放入iCloud容器中,因为它可能会损坏。 (在修改SQLite数据库时,临时文件会被创建并重命名,因此如果同步过程开始复制这些文件,则会收到损坏的数据库。)

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

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

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

总之,您可以选择迁移到核心数据或自己编写同步解决方案。哪一个最好取决于你的应用程序的细节。