6

Core Data 可以让我以编程方式创建新表吗?或者如果我需要,我需要直接使用 SQLite。

谢谢

4

3 回答 3

4

从 CoreData 的角度来看,您并没有真正创建新表,因为数据库表只是与核心数据模型相关联的一种可能的持久性存储类型。

但是,您可以使用 NSEntityDescription 类以编程方式创建新的核心数据实体。在 NSEntityDescription 类文档中,您会发现:

Entity descriptions are editable until they are used by an object graph manager. This
allows you to create or modify them dynamically. However, once a description is used 
(when the managed object model to which it belongs is associated with a persistent store
coordinator), it must not (indeed cannot) be changed. This is enforced at runtime: any
attempt to mutate a model or any of its sub-objects after the model is associated with a 
persistent store coordinator causes an exception to be thrown. If you need to modify a
model that is in use, create a copy, modify the copy, and then discard the objects with
the old model.

我从来没有尝试在运行时修改一个,所以我不确定当你有一个现有的 SQLite 持久性存储时它到底有多好,如果有的话。但它可能值得玩弄 NSEntityDescription 看看它是否能让你接近你想要做的事情。

于 2012-06-05T00:59:45.133 回答
0

您通常使用 Xcode 的数据模型设计工具以图形方式创建托管对象模型。(如果您希望可以在运行时以编程方式构建模型

核心数据编程指南

于 2012-06-19T11:42:29.197 回答
0

但是,您可以:

  • 创建一个对象模型上下文(在您正在/使用的当前上下文之外)
  • 创建一个或多个实体
  • 为该模型创建一个单独的持久存储
  • 保存实体等...
  • 完成后关闭商店

您不能即时更改模型,因为它们在被拉入运行时环境时几乎是固定的。

于 2013-09-21T14:28:23.693 回答