【问题标题】:Import iOS coredata into android sqlite将 iOS coredata 导入到 android sqlite
【发布时间】:2013-05-24 11:36:12
【问题描述】:

我想在我的 android 和 iOS 应用程序之间共享数据。我已经从这个目录中导出了核心数据 sqlite, ~/Library/Application Support/iPhone Simulator/User/Applications//Documents/.sqlite

我认为这很好。当我尝试使用 sqlite 浏览器打开 sqlite 文件时出现问题。因为它给出了一个错误,“不是 sqlite 3 文件”。我在想我会把coredata sqlite文件导入android。

但是我的问题是,将 iOS coredata 导入 android sqlite 的正确方法是什么?

【问题讨论】:

  • CoreData 使用特殊约定将数据存储在 sql 文件中,因此在 android 应用程序中重复使用它并不简单。
  • 在 iOS 和 Android 中使用 sqlite..具有相同的数据模型..
  • Core Data SQLite 文件将使用 SQLite 浏览器打开(尽管这通常不是很有用)。你确定你使用的是 SQLite 数据存储,而不是 Core Data 二进制存储?

标签: android ios sqlite core-data


【解决方案1】:

没有导出任何 iOS SQLite 文件,所以我不知道你如何导出你的。 也许您需要分析您的文件字节代码?看这个http://www.sqlite.org/fileformat.html

【讨论】:

    【解决方案2】:

    没有真正好的方法来获取由 Core Data 创建的 SQLite 文件并在其他任何地方使用它。 Core Data 不仅仅是一个 SQLite 包装器,它提供了具有不同规则和假设的完全不同的 API(例如,Core Data 具有真正的多对多关系,因此您不需要创建连接表)。 SQLite 是一个实现细节。因此,这些 SQLite 文件之一中的模式与 Core Data 对象模型只有一点相似之处。您可以在任何地方打开 SQLite 文件,但理解它可能是个问题。

    如果您想使用相同的数据并且您已经在使用 Core Data,您需要让您的应用将数据导出到更便携的文件 - 可能是 CSV,或者更通用的 SQLite 文件,或其他任何文件你觉得不错。

    如果您还没有使用 Core Data 并且需要这种可移植性,那么您最好直接将 SQLite 与您需要的任何架构一起使用。如果不是您需要的,您不必通过 Core Data 在 iOS 上使用 SQLite。您可以直接使用 SQLite 的 API,也可以通过 PLDatabaseFMDB 等包装器。

    【讨论】:

      【解决方案3】:

      Core Data 的 SQLite 存储是一个普通的 SQLite 文件,因此您的导入出现了其他问题。然而,Core Data 从它的实体到 SQLite 存储的映射是明确的依赖于实现的,因此,它不是规范的一部分,因此没有记录。由于允许在 Core Data 的版本之间进行更改,因此对其进行逆向工程也不一定安全*。

      从 iOS 5 开始,如果您真的想使用 Core Data 和 SQLite,那么您可以编写自己的 NSIncrementalStore。这将允许您将任何您想要的从 Core Data 映射到 SQLite。缺点是它几乎没有记录。

      (*) 虽然有时在里面闲逛会有所帮助;您可以提供命令行参数 -com.apple.CoreData.SQLDebug 1 让 Core Data 将它执行的所有 SQL 命令转储到控制台,然后在 SQLite 中打开持久存储并签出可能是一个有用的性能诊断查询计划,以确保您正在索引正确的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-08
        • 1970-01-01
        • 2021-01-06
        • 2012-01-16
        相关资源
        最近更新 更多