【问题标题】:Core data with existing sqlite db [duplicate]具有现有 sqlite db 的核心数据 [重复]
【发布时间】:2012-09-07 04:33:02
【问题描述】:

可能重复:
Migrate normal sqlite3 database to core data?

是否可以将现有的 sqlite db 加载到核心数据中?我遇到了麻烦,实际上在核心数据示例中,我发现它包含一个带有 z 前缀的表名和其他属性的数据库。那个z有什么意义?我还在此博客http://ablogontech.wordpress.com/2009/07/13/using-a-pre-populated-sqlite-database-with-core-data-on-iphone-os-3-0/ 中看到使用核心数据创建数据库并加载它,这是一种解决方法,但不是将数据加载到核心数据的正确方法。我需要对表进行大量更新和查询,请建议是直接使用sqlite还是使用core data?如果是核心数据,请建议将现有sqlite文件导入核心数据的最佳方法

【问题讨论】:

标签: ios sqlite core-data


【解决方案1】:

Core Data 使用 SQLite 的事实应该是一个实现细节。事实上,Core Data 文档明确指出,您不应该以任何方式在 Core Data 之外访问数据库本身。

同样,您不应该在 Core Data 下强制使用自己的数据库。

如果您想将现有数据库导入Core Data,您需要编写一些代码来遍历现有数据库中的每个条目,并创建相应的对象以插入Core Data。

FWIW,Z_ 的东西是他们数据库上的核心数据装饰。

不要弄乱数据库。现在,事实证明你可以对数据库做一些事情,但你真的不应该——除非你是专家——然后你仍然不应该,但可能会。

【讨论】:

    【解决方案2】:

    您想查看 Ray Wenderlich 的关于将现有数据预加载到核心数据中的教程:Check it out here 这是一个非常完整的教程,它将帮助您理清一些关于同时使用 Sqlite 和 Core Data 的概念。这是一个三部分的教程。试一试。

    【讨论】:

    • 没有更简单的方法吗?是否需要创建带有两个项目的mac命令行工具(因为它是一系列教程,您给出的链接是第二部分)来导入sql?看起来直接使用Sql更简单!!
    • 您已经创建了 SQLite 文件。因此,您可以做的是更改正在导入的文件的文件名,以便您可以将其从包中取出。我自己没有尝试过,但它应该可以工作。在您的 AppDelegate 中,您将拥有如下内容:NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"APPNAME.sqlite"];;你可以改成NSString *path = [[NSBundle mainBundle] pathForResource:@"APPNAME" ofType:@"sqlite" inDirectory:@"/"];
    • 也可以从相关部分查看:Core Data data schema from existing SQLite database
    【解决方案3】:

    你最好听听这里的建议。鉴于内部数据库已被修饰,您至少必须对自己的数据库做同样的事情,以使其有一半的工作机会。

    如前所述,您应该将它导入,例如,在您的代码库中使用为该任务编写的一次性代码。这样,ios 将在本地为您处理一切。

    【讨论】:

      猜你喜欢
      • 2014-04-11
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多