两个不同的managedObjects和一个sqlite数据库?
我想在同一个sqlite数据库中创建两个表。现在,这两个managedObjectModel不在同一个实例中运行。让我解释一下......我运行一次应用程序,然后以编程方式在持久性存储中创建managedObject。假设我有5个属性。然后我再次运行它,并在持久性存储中创建一个新的managedObject,但是这次我只使用了3个属性......我怎么能使这成为可能?现在它崩溃,因为属性的数量不匹配。两个不同的managedObjects和一个sqlite数据库?
谢谢!
最简单的答案是不要以编程方式创建数据模型。它应该在设计时创建,而不是修改。相反,您应该设计您的数据模型,以便足够灵活以满足您的需求。例如,不是创建一个具有可变数量属性的实体,而是创建两个实体,一个实体与另一实体之间存在一对多关系,并存储哪些信息会在您可变数量的属性中出现。
嗯,这似乎是一个似是而非的解决方案。好吧,可以说我创建了一个名为“attributes”的关系给另一个模型。我如何访问attribute1 ... attribute2等?这个其他模型应该包括什么? – Robert
我会从这里开始http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/cdProgrammingGuide.html。而要清楚的是,你正在创建一个新的实体,而不是一个新的模型。你的关系将是你的第一个实体的属性之一,并会返回你的第二个实体类型的对象的NSSet。它包含的信息完全取决于你。 –
所以基本上如果我要求[实体valueForKey:@“属性”]它会返回一个NSSet的值? 对不起,我一直在编程这么多次,现在我忘了它们被称为实体。 – Robert
我很困惑你的问题描述。你在这个应用程序中使用核心数据?您是否将新实体添加到数据模型?是否有任何代码可以让你更清楚你想要完成什么? –
我正在使用核心数据是的。我以编程方式创建了managedObjectModel,而不是使用xcdatamodel。 managedObjectModel根据X的多少来创建X个属性(让我们说X是从其他地方收集的,所以它并不总是相同的)。因此,如果我运行一次应用程序并且X = 5,则managedObjectModel将创建5个属性(称为attribute1 ...等)。然后,如果我再次运行它并且X = 3,那么managedObjectModel将创建3个属性。现在因为我只使用一个SQLite数据库,所以当属性数量不一样时,它会崩溃。 – Robert
我得到的错误是:'此NSPersistentStoreCoordinator没有持久性存储。它不能执行保存操作。'我很确定这是因为属性数量冲突,虽然...因为如果我将X设置为一个常量,我不会收到错误。 – Robert