Estoy seguro de que esta debe ser una pregunta estúpida, pero he rastreado los interwebbings y no puedo encontrar la respuesta. Muchas personas hablan sobre el uso del patrón Generation Gap, en el cual usted tiene una subclase NSManagedObject que se genera a partir de su modelo, y luego la subclase para agregar propiedades y comportamientos transitorios. El beneficio de esto es que si cambia su modelo persistente, puede simplemente generar sus archivos base nuevamente sin ningún peligro de sobreescribir su propio código.CoreData - cómo crear una subclase de una subclase de NSManagedObject (patrón Generation Gap)
Tengo un objeto CardMO base derivado de NSManagedObject. A continuación, hago una subclase para hacer mi propio objeto Card.
Mi pregunta es, ¿cómo creo un objeto de tarjeta que se administre?
me trataron:
Card* card = [NSEntityDescription insertNewObjectForEntityForName:@"CardMO" inManagedObjectContext:moc];
Pero este objeto no es realmente una tarjeta, y por supuesto hay una excepción cuando voy a llamar a un método de tarjeta en este objeto.
He intentado crear una tarjeta con alloc/init (init, donde sólo llama [súper init]), y después de añadir a la managedObjectContext así:
[moc insertObject:(CardMO*)card];
Esto me da el error críptico " No se ha podido llamar inicializador designado en clase 'tarjeta' NSManagedObject"
he intentado modificar esta llamando [NSEntityDescription insertNewObjectForEntityForName: @ "inManagedObjectContext CardMO": [AIStoreManager sharedAIStoreManager] .managedObjectContext] en lugar de [súper init]. En este caso, el objeto que recibo vuelve a ser un CardMO y no puedo llamar a los métodos de la Tarjeta.
¿Qué debería estar haciendo?
Y (para puntos de bonificación :-) - después de haber superado este obstáculo, necesito crear mis otros objetos de tarjeta desde XML, y luego convertirlos en NSManagedObjects. Estoy usando código basado en XMLReaderSAX de Apple. Le doy a este código una porción de XML y me devuelve una gran variedad de objetos de la Tarjeta. ¿Puedo agregar más adelante estos objetos a mi contexto de objeto administrado, o tengo que entrar en XMLReaderSAX y cambiar cómo crea esos objetos?
Estoy escribiendo una aplicación para iPhone en 3.0, pero supongo que esto es lo mismo para Core Data para 10.5.
Para hacer que el objeto gestionado del analizador sintáctico, tuve que entrar en el código derivado de Apple y cambiar el código de creación de objeto para que se vea como el anterior. Funcionó bien –