2012-02-03 12 views
5

comienzo a utilizar datos básicos con iOS 5. Tengo mi modelo del producto:error: CoreData: Error: No se pudo llamar inicializador designado en NSManagedObject clase de 'productos'

Product.m:

#import "Product.h" 
@implementation Product 
    @dynamic category_id; 
    @dynamic label; 
    @dynamic price; 
@end 

Product.h:

#import <Foundation/Foundation.h> 
#import <CoreData/CoreData.h> 

@interface Product : NSManagedObject 
    @property (nonatomic, retain) NSString *category_id; 
    @property (nonatomic, retain) NSString *label; 
    @property (nonatomic, retain) NSString *price; 
@end 

trato de analizar un xml con una clase personalizada utilizando NSXMLParserDelegate. Mi XML se parece a:

<section id="2"> 
    <label>Animaux</label> 
    <image>Images/Rayons/Bandeau/Animaux.png</image> 
    <key>Images/Rayons/Bandeau/Animaux.png</key> 
    <products> 
    <Product id="21"> 
     <category_id>Chat</category_id> 
     <label>Aliments pour chat</label> 
     <price>2.00</price> 
    </Product> 
    <Product id="1286"> 
     <category_id>Chat</category_id> 
     <label>Boite de paté</label> 
     <price>0.00</price> 
    </Product> 
    </products> 
</sections> 

cuando tengo una baliza del producto, construir mi modelo como este:

item = [[NSClassFromString(className) alloc] init]; 

y cuando tengo una propiedad como category_id, i hacer:

[item setValue:currentNodeContent forKey:elementName]; 

Y recibí el error:

CoreData: error: Error al invocar la inicialización designada er en NSManagedObject clase 'Producto'

¿Alguna idea?

Respuesta

11

la documentación para NSManagedObject estado que el intializer dedicado es:

initWithEntity:insertIntoManagedObjectContext: 

que es la razón de que está fallando. La mayoría de los ejemplos que he visto sugieren que debería obtener un nuevo objeto como éste

[NSEntityDescription entityForName:@"MyClass" inManagedObjectContext:self.managedObjectContext]]; 

lo que podría intentar algo como:

[NSEntityDescription entityForName:className inManagedObjectContext:self.managedObjectContext]]; 
+0

Se produce un error, existe mi aplicación con el SIGABRT error – Sebastien

+0

Usted don' Necesito el 'NSClassFromString()', ya que 'entityForName: inManagedObjectContext:' quiere un 'NSString' para el nombre de la entidad. – paulbailey

+0

Sí, lo intenté con este código pero mi aplicación falla sin error específico: [NSEntityDescription entityForName: className inManagedObjectContext: managedObjectContext], ¿cómo he de declarar el managedObjectContext? – Sebastien

Cuestiones relacionadas