1

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

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

它工作正常,

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

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

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

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

这里是保存问题的操作:-(IBAction)saveInterest:(id)发件人{

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

1 回答 1

1

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

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

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

于 2011-07-13T16:43:43.093 回答