我有一个在iOS上运行的Phonegap / Cordova应用程序。它将数据保存到HTML5 localStorage中。
如果可以将localStorage数据(使用iCloud)同步到其他iOS设备甚至OS X,我正在努力解决。
从我所看到的,在iOS中,localStorage实际上是作为SQLite数据库实现的,当使用Phonegap / Cordova时,它被写入应用程序的Documents目录:
文档/备份/ localstorage.appdata.db
我也理解在iCloud中存储数据有三种主要方式:
我知道我无法使用Key / Value iCloud存储方法,因为我需要存储超过1MB的数据,并且使用该方法每个应用程序的限制为1MB。
This question,我相信是在谈论UIDocument方法,并询问是否可以使用该方法在iCloud中存储SQLite db文件。答案是否定的,因为数据库可能已损坏。
所以这真的离开了核心数据方法。
所以我的问题是 - 这会有用吗?我可以使用Core Data将localStorage.db文件同步到iCloud吗?
我从未使用过核心数据而且对此并不了解。我只是想知道它是否可能,或者是否有其他我不理解的东西。
还有其他方法可以在iOS设备或OS X之间同步localStorage数据吗?
答案 0 :(得分:1)
答案不幸的是,核心数据无法与HTML5 localStorage一起使用
除了使用Core Data创建的数据库之外,核心数据不能与SQLite数据库一起使用。如果你尝试,你会在XCode中得到这个错误:
SQLite error code:1, 'no such table: Z_METADATA'
核心数据文档解释了这一点:
虽然Core Data支持SQLite作为其持久存储之一 类型,数据库格式是私有的。您无法创建SQLite 数据库使用本机SQLite API并直接与Core Data一起使用 (也不应该使用现有的Core Data SQLite存储来操作 原生SQLite API)
我仍然想解决这个问题。我正在考虑创建一个镜像localStorage API的Javascript API。这将是一个phonegap插件,可以调用objective-c代码,并有效地将其更改写入Core Data数据库。然后,核心数据数据库应该能够同步到iCloud。
如果有效,我会回来更新这个答案。