我有一个包含 100 多个表的 sqlite 数据库。每个表由 50 多列组成。我想将数据库导入CoreData。
我可以在 CoreData 中创建表并添加与 sqlite 数据库相对应的列,还是必须在 CoreData 中一一手动创建表?
可以通过编程方式创建 Core Data 模型。创建一个NSManagedObjectModel
,为模型创建一些NSEntityDescription
实例,等等。关于 Core Data 模型的所有内容都可以在代码中进行配置,并且都有很好的文档记录。
但是,只有在尚未加载使用该模型的持久性存储时才能执行此操作。一旦你持久存储,NSManagedObjectModel
实例必须被视为只读。加载 store 后修改它会抛出异常。如果你这样做一次是为了创建你的初始模型,那很好,但如果你想一直这样做,那么你可能会遇到问题。
既然你已经有了这个 SQLite 数据库,你最好把它保存在 SQLite 中而不使用 Core Data。SQLite 有几个很好的 Objective-C 包装器——查看PLDatabase和FMDB。
恐怕CoreData目前无法做到这一点。
要使用核心数据,您必须定义持久存储和托管对象模型。这些是表示在“.xcdatamodeld”中创建的实体的类。这些不能在运行时生成。
所以更好的是使用 Sqlite 或其他数据库库在运行时动态创建表。
您应该为此目的使用 sqlite,因为这对于核心数据仍然是不可能的。核心数据使用 NSManagedObjectModel 创建在编译期间构建的实体模型。
结论 - 为此目的使用 Sqlite 数据库。