Почему я получаю эту ошибку NSManaged Object

#iphone #objective-c #core-data

#iPhone #objective-c #core-data

Вопрос:

Получаю ошибку в строке [theSelectedRoutine addExerciseObject: exercise]; , в которой говорится, что метод addExerciseObject не найден.

Интерфейс: процедура @property (неатомная, сохранить) * Выбранная процедура;

 -(void)addExercise
{   
    if (managedObjectContext == nil) 
    { 
        managedObjectContext = [(CurlAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; 
        [managedObjectContext retain];
    }

    UIBarButtonItem *addButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(exerciseChooser)];
    self.navigationItem.rightBarButtonItem = addButton;
    [addButton release];

    NSError *error = nil;

    Exercise *exercise = (Exercise *)[NSEntityDescription insertNewObjectForEntityForName:@"Exercise" inManagedObjectContext:managedObjectContext];

    exercise.name = selectedExercise;

    [theSelectedRoutine addExerciseObject: exercise];

    if (![managedObjectContext save:amp;error]) 
    {
        // Handle the error.
    }
    NSLog(@"%@", error);

    [self.routineTableView reloadData];

}
  

..

 Routine Class
#import "Routine.h"
#import "Exercise.h"


@implementation Routine
@dynamic name;
@dynamic timeStamp;
@dynamic routineExercises;

- (void)addRoutineExercisesObject:(Exercise *)value {    
    NSSet *changedObjects = [[NSSet alloc] initWithObjects:amp;value count:1];
    [self willChangeValueForKey:@"routineExercises" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects];
    [[self primitiveValueForKey:@"routineExercises"] addObject:value];
    [self didChangeValueForKey:@"routineExercises" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects];
    [changedObjects release];
}

- (void)removeRoutineExercisesObject:(Exercise *)value {
    NSSet *changedObjects = [[NSSet alloc] initWithObjects:amp;value count:1];
    [self willChangeValueForKey:@"routineExercises" withSetMutation:NSKeyValueMinusSetMutation usingObjects:changedObjects];
    [[self primitiveValueForKey:@"routineExercises"] removeObject:value];
    [self didChangeValueForKey:@"routineExercises" withSetMutation:NSKeyValueMinusSetMutation usingObjects:changedObjects];
    [changedObjects release];
}

- (void)addRoutineExercises:(NSSet *)value {    
    [self willChangeValueForKey:@"routineExercises" withSetMutation:NSKeyValueUnionSetMutation usingObjects:value];
    [[self primitiveValueForKey:@"routineExercises"] unionSet:value];
    [self didChangeValueForKey:@"routineExercises" withSetMutation:NSKeyValueUnionSetMutation usingObjects:value];
}

- (void)removeRoutineExercises:(NSSet *)value {
    [self willChangeValueForKey:@"routineExercises" withSetMutation:NSKeyValueMinusSetMutation usingObjects:value];
    [[self primitiveValueForKey:@"routineExercises"] minusSet:value];
    [self didChangeValueForKey:@"routineExercises" withSetMutation:NSKeyValueMinusSetMutation usingObjects:value];
}


@end
  

Ответ №1:

Ну, я addExerciseObject тоже не вижу, разве это не должно быть [theSelectedRoutine addRoutineExercisesObject:exercise]; ?

Комментарии:

1. Я тоже пробовал это, но я все еще получаю ту же ошибку. В нем говорится, что метод -addRoutineExercisesObject не найден (возвращаемый тип по умолчанию равен ‘id’).

2. есть ли прототип этого метода в .h файле?

3. Нет, этого не было. Вы правы, ошибка теперь устранена. Я бы подумал, что они автоматически сгенерировали метод в .h.