iOS CoreDataGeneratedAccessors并保存在一对多中

时间:2011-07-13 12:38:27

标签: ios core-data accessor generated

我在一个只有一个父项和一个子项[一对多]的项目中使用了coredata,cd将为NSManagedObject生成entity.h和entity.m,[ok] 问题是在我之前的项目中,我的entityMother.h中的addCategToEntityObject

- (void)addCategToEntityObject:(NSManagedObject *)value;

它工作正常,

但在我的新项目中,CoreDataGeneratedAccessors 对于entityMother.h是

- (void)addTo_InterestObject:(Interest *)value;

所以我使用一种相同的方法来保存,但现在得到警告并在运行时崩溃 当然! [但是如何解决它!]

  

警告:不兼容的Objective-C类型'struct NSManagedObject *',当从不同的Objective-C类型传递'addTo_InterestsObject'的参数1时,预期'struct Interest *'

此处存储问题的操作:      - (IBAction)saveInterest:(id)sender {

NSManagedObject *newItem;

NSManagedObjectContext *contextCateg_ = [categ_ managedObjectContext];


NSLog(@"el contexto :%@",contextCateg);

newItem = [NSEntityDescription insertNewObjectForEntityForName:@"Interest" inManagedObjectContext:contextCateg_];


[categ_ addTo_InterestObject:interest_]; //vooddoo! un mensaje del mas alla!



//OJO, COREDATA ME GENERA UN   - (void)addTo_InterestObject:(Interest *)value;
// EN LUGAR De NSManagedObject, 


[newItem setValue:item_new.text forKey:@"interest"];

NSError *error;
[context save:&error];
NSLog(@"ITEM saved");

中的.h

#import <UIKit/UIKit.h>


 @class Categories, Interest;

 @class EventMAppDelegate;
 @class editContactViewController; 


  @interface BackEndViewController : UIViewController <UITableViewDelegate,   UITableViewDataSource, NSFetchedResultsControllerDelegate> {

Categories *categ_; //objetos de los Entities
    Interest *interest_;

NSManagedObjectContext *contextCateg;

1 个答案:

答案 0 :(得分:1)

问题是由于在第一个模型中,您的Categ实体没有定义指定的NSManagedObject子类名,因此代码生成器只为方法参数指定了一个通用的NSManagedObject值类型。

但是,在第二个模型中,您的Interest实体定义了NSManagedObject子类名Interest,因此代码生成器为方法参数指定了Interest类型。

根据定义,您必须将类Interest的对象传递给方法。如果您不希望这样做,则必须从数据模型中删除类名,并重新生成代码以接受通用NSManagedObject。