我没有在文档/讨论中找到明确的“否”,但怀疑在运行时无法以编程方式生成CoreData对象。
我想要做的是类似于从运行代码中执行DDL命令(例如“创建表”,“删除表”等),因为我不知道直到我问用户他的表有多少列需要,或者他们需要什么样的数据类型。也许他需要多张桌子。
有谁知道这是否可行?会欣赏指向要阅读的东西的指针。 (也希望学习消极,所以我可以停止疑惑。)
如果在CoreData中不可行,那么这是切换到SQLite的原因吗?
答案 0 :(得分:4)
您可以在运行时创建整个Core Data模型 - 根本不需要使用Xcode的数据建模器,并且有API支持来创建和配置模型的每个细节。但它可能不像你想要的那样灵活。虽然您可以创建新的实体描述或修改现有实体描述,但只能在 加载数据存储文件之前执行此操作。在读取和写入数据后,必须将数据模型视为已修复。在此时更改它将产生异常。
它与典型的SQLite用法并不完全相同。它有点像SQLite表在一个fie中定义,数据存储在另一个文件中 - 您可以在加载实际数据之前动态修改表。 (我知道这不是SQLite真正起作用的方式,但这基本上就是Core Data强制执行的方法。)
如果您希望在描述时修改模型/模式,那么直接使用SQLite访问可能会更好。有几个Objective-C SQLite包装器允许ObjC风格的方法,同时仍然支持SQLite风格的访问: