#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.