我相信这肯定是一个愚蠢的问题,但我已经搜索到了网络间并找不到答案。很多人都在谈论如何使用Generation Gap模式,其中有一个从您的模型生成的NSManagedObject子类,然后将其添加到子类中以添加瞬态属性和行为。这样做的好处是,如果更改持久化模型,则可以再次生成基础文件,而不会覆盖自己的代码。CoreData - 如何创建NSManagedObject的子类的子类(Generation Gap pattern)
我有一个从NSManagedObject派生的基础CardMO对象。然后我将这个子类化成我自己的Card对象。
我的问题是,如何创建一个管理的卡对象?
我想:
Card* card = [NSEntityDescription insertNewObjectForEntityForName:@"CardMO" inManagedObjectContext:moc];
但这对象是不是一个真正的卡,当我去到调用这个对象上的卡方法当然有一个例外。
我试图创造与分配/ init中的卡(其中INIT只是调用[超级的init]),然后将它添加到managedObjectContext这样的:
[moc insertObject:(CardMO*)card];
这给了我神秘的错误“未能呼吁NSManagedObject类 '卡' 的指定初始化”通过调用
我试着修改此[NSEntityDescription insertNewObjectForEntityForName:@ “CardMO” inManagedObjectContext:AIStoreManager sharedAIStoreManager] .managedObjectContext]而不是[超级初始化。在这种情况下,我返回的对象又是一个CardMO,我不能在其上调用Card方法。
我该怎么做?
(对于奖励积分:-) - 在我通过这个障碍之后,我需要从XML创建其他Card对象,然后将它们转换为NSManagedObjects。我使用的是基于Apple的XMLReaderSAX的代码 - 我将这段代码交给了一个XML块,它给了我很多Card对象的数组。以后可以将这些对象添加到我的托管对象上下文中,还是必须进入XMLReaderSAX并更改它如何创建这些对象?
我正在写一个3.0的iPhone应用程序,但我认为这与10.5的核心数据是一样的。
要从解析器中创建托管对象,我必须获取Apple派生的代码,并将对象创建代码更改为如上所示。它运行良好。 – 2009-06-03 07:40:36