CoreData - como criar uma subclasse de uma subclasse de NSManagedObject (padrão de gap de geração)
Tenho certeza de que deve ser uma pergunta estúpida, mas vasculhei as inter-redes e não consigo encontrar a resposta. Muitas pessoas falam sobre o uso do padrão de gap de geração, no qual você tem uma subclasse NSManagedObject que é gerada a partir do seu modelo e, em seguida, na subclasse para adicionar propriedades e comportamentos transitórios. A vantagem disso é que, se você alterar seu modelo persistente, poderá gerar seus arquivos de base novamente sem o risco de sobrescrever seu próprio códig
Eu tenho um objeto CardMO base derivado de NSManagedObject. Subclasse isso para criar meu próprio objeto Card.
minha pergunta é: como faço para criar um objeto Card que é gerenciad
Eu tentei
Card* card = [NSEntityDescription insertNewObjectForEntityForName:@"CardMO" inManagedObjectContext:moc];
Mas este objeto não é realmente um cartão e, é claro, há uma exceção quando eu chamo um método de cartão nesse objet
Tentei criar um cartão com aloc / init (onde init chama apenas [super init]) e, em seguida, adicioná-lo ao managedObjectContext assim:
[moc insertObject:(CardMO*)card];
Isso me dá o erro enigmático "Falha ao chamar o inicializador designado na classe NSManagedObject 'Card'"
Tentei modificar isso chamando [NSEntityDescription insertNewObjectForEntityForName: @ "CardMO" inManagedObjectContext: [AIStoreManager sharedAIStoreManager] .managedObjectContext] em vez de [super init]. Nesse caso, o objeto que eu volto é novamente um CardMO e não posso chamar métodos de cartão nel
O que devo fazer?
E (para pontos de bônus :-) - depois de ultrapassar esse obstáculo, preciso criar meus outros objetos Card a partir de XML e transformá-los em NSManagedObjects. Estou usando um código baseado no XMLReaderSAX da Apple - entrego a esse código um pedaço de XML e ele me devolve uma matriz de muitos objetos Card. Posteriormente, posso adicionar esses objetos ao meu contexto de objeto gerenciado ou preciso entrar no XMLReaderSAX e alterar como ele cria esses objetos?
Estou escrevendo um aplicativo para iPhone no 3.0, mas presumo que esse seja o mesmo para o Core Data para 10.