iOS CoreDataGeneratedAccessors и сохранить в один ко многим - PullRequest
1 голос
/ 13 июля 2011

Я использовал coredata в проекте только с родителем и потомком [один ко многим], cd будет генерировать entity.h и entity.m для NSManagedObject, [ок] проблема в том, что в моем предыдущем проектеaddCategToEntityObject в моем entityMother.h равно

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

, и оно отлично работает,

, но в моем новом проекте CoreDataGeneratedAccessors для entityMother.h равно

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

поэтому я использую тот же подход к сохранению, но теперь получаю предупреждение, и во время выполнения происходит сбой с курса![но как это исправить!]

ВНИМАНИЕ: Несовместимые типы Objective-C 'struct NSManagedObject *', ожидаемый 'struct Interest *' при передаче аргумента 1 из 'addTo_InterestsObject' из отличного типа Objective-C

здесь действие для сохранения с проблемой: - (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;

1 Ответ

1 голос
/ 13 июля 2011

Проблема вызвана тем, что в первой модели ваша сущность Categ не имела определенного имени подкласса NSManagedObject, поэтому генератор кода просто назначил тип значения общего NSManagedObject параметру метода.

Однако во второй модели для вашей сущности Interest определено имя подкласса NSManagedObject Interest, поэтому генератор кода назначил тип Interest параметру метода.

Asопределено, вы должны передать объект класса Interest в метод.Если вы не хотите этого делать, вы должны удалить имя класса из модели данных и заново сгенерировать код, чтобы принять общий NSManagedObject.

...