首页 文章

可以将Cordova / Phonegap应用中的HTML5 localStorage同步到iCloud吗?

提问于
浏览
2

我有一个在iOS上运行的Phonegap / Cordova应用程序 . 它将数据保存到HTML5 localStorage中 .

如果可以将localStorage数据(使用iCloud)同步到其他iOS设备甚至OS X,我正在努力解决这个问题 .

从我所看到的,在iOS中,localStorage实际上是作为SQLite数据库实现的,当使用Phonegap / Cordova时,它被写入应用程序的Documents目录:

文件/备份/ localstorage.appdata.db

我也明白在iCloud中存储数据有三种主要方式:

  • 键/值存储

  • UIDocument / NSDocument

  • 核心数据

我知道我不能使用Key / Value iCloud存储方法,因为我要存储超过1MB的数据,并且使用该方法每个应用程序的限制为1MB .

This question,我相信是在谈论UIDocument方法,并询问是否可以使用该方法在iCloud中存储SQLite db文件 . 答案是否定的,因为数据库可能已损坏 .

所以这真的离开了Core Data方法 .

所以我的问题是 - 这会有用吗?我可以使用Core Data将localStorage.db文件同步到iCloud吗?

我从来没有使用过Core Data,也不太了解它 . 我只是想知道它是否可能,或者是否有其他我不理解的东西 .

有没有其他方法可以在iOS设备或OS X之间同步localStorage数据?

1 回答

  • 1

    答案不幸的是,Core Data不能与HTML5 localStorage一起使用

    除了使用Core Data创建的数据之外,Core Data不能与SQLite数据库一起使用 . 如果你尝试,你在XCode中得到这个错误:

    SQLite error code:1, 'no such table: Z_METADATA'
    

    核心数据文档解释了这一点:

    https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdFAQ.html#//apple_ref/doc/uid/TP40001802-SW2

    虽然Core Data支持SQLite作为其持久存储类型之一,但数据库格式是私有的 . 您无法使用本机SQLite API创建SQLite数据库并直接将其与Core Data一起使用(您也不应使用本机SQLite API操作现有的Core Data SQLite存储)

    我仍然想解决这个问题 . 我正在考虑创建一个镜像localStorage API的Javascript API . 这将是一个phonegap插件,可以调用objective-c代码,并有效地将其更改写入Core Data数据库 . 然后,核心数据数据库应该能够同步到iCloud .

    如果有效,我会回来更新这个答案 .

相关问题