2012-02-03 12 views
5

zacznę korzystać z danych podstawowych z iOS 5. Mam model produktu:Błąd: CoreData: error: Nie można nazwać wyznaczony inicjator na NSManagedObject klasy 'produkt'

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 

staram się analizować xml z klasy niestandardowej przy użyciu NSXMLParserDelegate. Mój xml wygląda następująco:

<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> 

kiedy mam balise Produktu buduję mój model tak:

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

i kiedy mają właściwość jako category_id, robię:

[item setValue:currentNodeContent forKey:elementName]; 

i mam błąd:

CoreData: bŁĄD: Nie można nazwać wyznaczony initializ er w klasie NSManagedObject "Produkt"

Masz pomysł?

Odpowiedz

11

Docs dla NSManagedObject stanu, który jest dedykowany intializer:

initWithEntity:insertIntoManagedObjectContext: 

dlatego, że jest wadliwa. Większość przykładów widziałem sugerują, należy uzyskać nowy obiekt jak ten

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

Więc można spróbować coś takiego:

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

To nie moja aplikacja istnieje z SIGABRT błędu – Sebastien

+0

don” t potrzeba 'NSClassFromString()', ponieważ 'entityForName: inManagedObjectContext:' chce 'NSString' dla nazwy jednostki. – paulbailey

+0

Tak, próbowałem z tym kodem, ale mojej awarii aplikacji bez określonego błędu: [NSEntityDescription entityForName: className inManagedObjectContext: managedObjectContext], jak mam zadeklarować managedObjectContext? – Sebastien

Powiązane problemy