【发布时间】:2013-02-24 10:47:28
【问题描述】:
我没有在文档/讨论中找到明确的“否”,但怀疑无法在运行时以编程方式生成 CoreData 对象。
我想做的类似于从运行代码中执行 DDL 命令(例如“创建表”、“删除表”等),因为我不知道直到我询问用户他的表有多少列需要,或者他们需要什么数据类型。也许他需要多张桌子。
有人知道这是否可能吗?希望有一个指向要阅读的东西的指针。 (也很感激学习负面的,所以我可以停止怀疑。)
如果在 CoreData 中不可行,这会是切换到 SQLite 的理由吗?
【问题讨论】:
-
您可以在运行时创建 Core Data“托管对象模型”和“实体描述”(示例参见 stackoverflow.com/a/13744302/1187415)。但请注意,Core Data 是一个“对象图管理器”,而不是数据库(参见例如cocoawithlove.com/2010/02/…)。因此,对于 Core Data,您应该考虑对象及其属性和关系,而不是表。
-
我完全同意@MartinR ;)
-
非常感谢。我会研究参考。我刚才也遇到了stackoverflow.com/questions/6379025/…,好像在同一个区域(发现有点晚了,抱歉:-))
-
看起来我可以动态创建 CoreData 对象,但必须将它们分配给一个必须在运行时之前定义的类(实际上,如何使用属性)。所以我想我不能真正使用在运行时完全组成的 CoreData 对象(和关联的类)。我想我必须在 CoreData 对象之上实现我自己的动态实体属性数据模型。这会让我很困惑。感谢您提供上述信息。
-
您不必创建或分配课程。默认情况下,它们将是 NSManagedObject 实例——要获取你放在实体上的属性,只需使用键值编码 ... [thing valueForKey:@"stuff"], [thing setValue:@"other" forKey:@"stuff];