以编程方式使用ios-core数据创建新表

时间:2012-06-05 00:39:03

标签: iphone ios database sqlite core-data

核心数据是否允许我以编程方式创建新表?或者如果我需要,我需要直接使用SQLite。

感谢

3 个答案:

答案 0 :(得分: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可能值得一试,看看它是否能让你接近你想要做的事情。

答案 1 :(得分:0)

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

Core Data programming Guide

答案 2 :(得分:0)

但是你可以:

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

您无法动态更改模型,因为它们在被拉入运行时环境时几乎已得到修复。