2012-02-03 91 views
5

指定初始化我开始使用与iOS 5.我有我的产品模型的核心数据:错误:CoreData:错误:未能呼吁NSManagedObject类 '产品'

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 

我尝试解析使用NSXMLParserDelegate自定义类的XML。我的XML看起来像:

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

时,我有一个应答器产品,我建我的模型是这样的:

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

当我有一个属性为CATEGORY_ID,我做的:

[item setValue:currentNodeContent forKey:elementName]; 

而我得到的错误:

CoreData:错误:无法调用指定的initializ呃在NSManagedObject类'产品'

任何想法?

initWithEntity:insertIntoManagedObjectContext: 

这就是为什么失败:

回答

11

NSManagedObject状态专用的初始化器是该文档。大部分我所看到的例子表明,你应该得到这样

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

一个新的对象,因此,你可以尝试这样的:

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

它失败了,我的应用程序有错误SIGABRT – Sebastien 2012-02-03 15:08:41

+0

你不”存在因为'entityForName:inManagedObjectContext:'需要'NSString'作为实体名称,所以需要'NSClassFromString()'。 – paulbailey 2012-02-03 16:04:45

+0

是的,我试着用这段代码,但我的应用程序崩溃没有具体的错误:[NSEntityDescription entityForName:className inManagedObjectContext:managedObjectContext],我该如何声明managedObjectContext? – Sebastien 2012-02-03 16:07:52

相关问题