Error al llamar al inicializador designado en la class NSManagedObject 'building'

Actualmente estoy creando mi NSXMLParser donde paso al delegado alnetworkingedor del object relevante.

Cuando mi analizador alcanza un elemento con el nombre "building", inicializará un nuevo Building con este código.

if ([elementName isEqualToString:@"building"]) { building = [[Building alloc] initWithAttributes:attributeDict parent:self children:nil parser:parser]; } 

He creado mi propio inicializador en la class Building, que es una subclass de NSManagedObject. (Creado automáticamente desde Core Data).

Se parece a esto:

 - (id)initWithParser:(NSXMLParser *)parser { if (self = [super init]) { [parser setDelegate:self]; } return self; } 

Pero recibo este error cuando lo ejecuto: "Error al llamar al inicializador designado en la class NSManagedObject".

La class Building debería continuar parsing las tags en la construcción y crear el gráfico de object en el file XML.

En otras palabras, la class Building necesita saber cómo analizar, rellenar variables de instancia, crear la entidad y savela en el gráfico de objects (solo para entender, esto puede ignorarse)

¿Hice algo mal? ¿No puedo crear mi propio inicializador? Tal vez debería crear una class que henetworkinge de NSObject y crear mi analizador sintáctico y luego crear la entidad de la manera normal desde allí.

Lo siento por esta larga publicación.

Eche un vistazo a la documentation del ciclo de vida del object de NSManagedObjects y sus subclasss. El ciclo de vida es diferente de los objects normales de tipo NSObject y debe comprenderlo si va a trabajar con Core Data.

El inicializador designado para NSManagedObjects es initWithEntity:insertIntoManagedObjectContext: por lo que cualquier inicializador personalizado que implemente debe llamar primero a este método. Sin embargo , como se indica en la documentation, no se recomienda que se anule este método.

En su lugar, realice la initialization personalizada en awakeFromInsert o awakeFromFetch . Para crear una nueva instancia de un NSManagedObject, llame a initWithEntity:insertIntoManagedObjectContext: o use el método de conveniencia +[NSEntityDescription insertNewObjectForEntityForName:inManagedObjectContext:] .