【问题标题】:is it possible to use more than one SQLite files in CoreData?是否可以在 CoreData 中使用多个 SQLite 文件?
【发布时间】:2010-09-26 13:36:41
【问题描述】:

你好,stackoverflow 家庭成员?

我知道在 iPhone CoreData 系统中创建一个额外的 sqlite 表效率不高。 (十)

目前,我的应用程序只有一个 sqlite 表,但有预设数据给用户,无需浪费解析时间。但是如果我在 SQLite 表的当前结构中添加新实体,它会清除整个预设数据。我没有尝试使用 immigrate 方法,但我认为这不仅仅是在表上添加一个新实体。我认为它还会清除以前的预设数据。

SQLite 文件的当前架构。

  • 实体:A
  • 属性:包含数据

我想保留 A 的属性仍然包含数据但还要添加新实体:B.

实体:A

属性:以前包含的数据

(加号+)

实体:B

属性:新数据

我是否需要创建额外的持久性集来单独存储实体 B(创建另一个 SQLite 文件并用作存储)或者是否有可能在当前 SQLite 中添加实体 B 而实体 A 没有变化?

谢谢。

【问题讨论】:

  • 您接受了我的回答,这让我觉得您将创建多个持久存储。这很可能不是你真正想要的。如果您澄清您的问题,我们或许能够帮助您确定问题的最佳解决方案。

标签: iphone objective-c xcode sqlite core-data


【解决方案1】:

直接回答您的问题:是的,您可以在 Core Data 中引用多个 SQLite 文件。您需要为每一个都使用一个唯一的持久性存储。

不过,我不明白您的其余问题,因此创建多个持久性存储可能根本不是您想要的。

我知道在 iPhone CoreData 系统中创建一个额外的 sqlite 表是有效的。

这是不真实的。创建多个实体(又名表,但已抽象出来)可以提高查询效率。

目前,我的应用程序有一个 sqlite 表,但无需更改预设的 sqlite 表,但想添加一些其他属性。

只需将属性添加到您的实体。如果您的应用已经发布或者您想维护现有数据,则必须设置migration and/or turn on lightweight migration

因此,使用新属性提交并更新 coredata 是无效的。因为它会闪现当前数据集,需要再花几个小时手动输入。

这对我来说没有任何意义。你能澄清一下吗?

【讨论】:

  • 我尝试添加额外实体的是启动 UIAlertView 以评估我的应用程序和实体上的记录取决于条件。条件是: 1> 如果用户没有按下确定按钮,则每隔 i%7==0 天询问一次 2> 如果他们已经按下确定按钮,则忽略。
  • 当前表包含由于手动输入而我不想擦除或重新解析的数据。你觉得苹果的移民方式应该管用吗?我很困惑..
  • 是的,当然。按照我的答案中包含的迁移链接。这允许您添加/删除实体和属性,而不会丢失商店中已有的数据。这仅与您的问题无关,但我建议您找到一种自动加载数据的方法。手动将数据输入 iPhone 应用程序是一件非常痛苦的事情,能够擦除数据库并重新开始非常有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多