错误:CoreData:错误:无法在NSManagedObject类'Product'上调用指定的初始值设定项

时间:2012-02-03 14:28:25

标签: objective-c core-data ios5

我开始在ios 5中使用核心数据。我有我的产品型号:

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:错误:无法在NSManagedObject类'Product'上调用指定的初始值设定项

有什么想法吗?

1 个答案:

答案 0 :(得分:11)

NSManagedObject的文档声明专用的初始化程序是:

initWithEntity:insertIntoManagedObjectContext:

这就是失败的原因。我见过的大多数例子都表明你应该得到一个像这样的新对象

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

所以你可以尝试类似的东西:

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