Правильно ли я добавляю объект в основные данные?

У меня есть сущность "Routine" с отношением ко многим к "Exercise", которая называется "regularExercises".

У меня есть метод под названием addExercise , который должен добавить упражнение в экземпляр Routine.

Правильный ли это способ реализовать это в коде?

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

exercise.name = selectedExercise;

NSMutableSet *exercises = [[NSMutableSet alloc]init];

[exercises addObject:exercise];

Routine *routine = [NSEntityDescription insertNewObjectForEntityForName:@"Routine" inManagedObjectContext:managedObjectContext];

routine.routineExercises = exercises;

Обновление: я получаю сообщение об ошибке в подпрограмме. экземпляр 0x711bf30 со многими отношениями к «Упражнениям», называемым «рутинными упражнениями». У меня есть метод addExercise, который должен добавить упражнение в экземпляр Routine. Это ...

У меня есть сущность "Routine" с отношением ко многим к "Exercise", которая называется "regularExercises".

У меня есть метод под названием addExercise , который должен добавить упражнение к экземпляру Routine.

Это правильный способ реализовать это в коде?

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

exercise.name = selectedExercise;

NSMutableSet *exercises = [[NSMutableSet alloc]init];

[exercises addObject:exercise];

Routine *routine = [NSEntityDescription insertNewObjectForEntityForName:@"Routine" inManagedObjectContext:managedObjectContext];

routine.routineExercises = exercises;

Обновление: я получаю сообщение об ошибке в подпрограмме .routineExercises = упражнения, в которой говорится: «- [Routine setRoutineExercises:]: нераспознанный селектор отправлен на экземпляр 0x711bf30 со многими отношениями к «Упражнениям», называемым «рутинными упражнениями». У меня есть метод addExercise, который должен добавить упражнение в экземпляр Routine. Это ...

У меня есть сущность "Routine" с отношением ко многим к "Exercise", которая называется "regularExercises".

У меня есть метод под названием addExercise , который должен добавить упражнение в экземпляр Routine.

Правильный ли это способ реализовать это в коде?

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

exercise.name = selectedExercise;

NSMutableSet *exercises = [[NSMutableSet alloc]init];

[exercises addObject:exercise];

Routine *routine = [NSEntityDescription insertNewObjectForEntityForName:@"Routine" inManagedObjectContext:managedObjectContext];

routine.routineExercises = exercises;

Обновление: я получаю сообщение об ошибке в подпрограмме. экземпляр 0x711bf30 2011-04-27 01: 25: 37.683 Curl [888: 207] *** Завершение работы приложения из-за неперехваченного исключения 'NSInvalidArgumentException', причина: '- [Routine setRoutineExercises:]: нераспознанный селектор отправлен в экземпляр 0x711bf30' "

Обновление:

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

    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Exercise" inManagedObjectContext:managedObjectContext];
    [request setEntity:entity];

    NSError *error = nil;
    NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
    if (mutableFetchResults == nil) {
        // Handle the error.
    }

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

    exercise.name = selectedExercise;

    NSMutableSet *exercises = [NSSet setWithObjects:exercise,nil];

    Routine *routine = (Routine *)[NSEntityDescription insertNewObjectForEntityForName:@"Routine" inManagedObjectContext:managedObjectContext];

    routine.routineExercises = exercises;

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

    [self.routineTableView reloadData];
    [mutableFetchResults release];
    [request release];
}

enter image description here

Ошибка:

2011-04-27 03:05:58.902 Curl[1954:207] -[Routine setRoutineExercises:]: unrecognized selector sent to instance 0x5d4a4e0
2011-04-27 03:05:58.904 Curl[1954:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Routine setRoutineExercises:]: unrecognized selector sent to instance 0x5d4a4e0'

Routine.h

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@class Exercise;

@interface Routine : NSManagedObject {
@private
}
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSDate * timeStamp;
@property (nonatomic, retain) NSSet* routineExercises;

@end

Routine.m

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


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

- (void)addRoutineExercisesObject:(Exercise *)value {    
    NSSet *changedObjects = [[NSSet alloc] initWithObjects:&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:&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
5
задан 27 April 2011 в 07:34
поделиться