我想为sqlite的包装提供iCloud支持。没有使用coredata。
我想知道如何为它启用iCloud。数据库内容始终更改(用于开票)。此外,如果可以进行某种版本控制将很棒。
我可以用任何样本来做这件事吗?
答案 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或自己编写同步解决方案。哪一个最好取决于您的申请细节。