2013-07-16 2 views
0

Я пытаюсь установить связь между введенными значениями данных ядра. В настоящее время я настроил его, поэтому, когда я добавляю значение, он создает отношения в соответствующем объекте, который я могу просмотреть в подробном представлении.Core Data Relationship - Добавить существующее значение

То, что я пытаюсь достичь, - это добавить отношение к существующему значению внутри объекта, которое хранится в строке RoutineText. Поэтому вместо создания второй идентичной записи связь добавляется к новой записи. Таким образом, в подробном представлении обе записи будут доступны для просмотра.

Нынешняя ситуация, когда inputing значения The current situation when inputing the values

Так вместо этого создания:

TestName1 ---->TestName1Detail

TestName1 --- ->TestName2Detail

было бы создать:

TestName1 ---->TestName1Detail + TestName2Detail

NSManagedObjectContext *context = [self managedObjectContext]; 

    // Create a new device 
    ExcerciseInfo *info = [_fetchedResultsController objectAtIndexPath:indexPath]; 
    Routines *routineEntity = [NSEntityDescription insertNewObjectForEntityForName:@"Routines"inManagedObjectContext:context]; 

    RoutinesDetails *routineEntityDetail = [NSEntityDescription insertNewObjectForEntityForName:@"RoutinesDetails" inManagedObjectContext:context]; 

    //Create Relationship 
    [routineEntity addRoutinedetObject:routineEntityDetail]; 

    //Add attribute values 
    //[routineEntity setValue: RoutineText forKey:@"routinename"]; 
    [routineEntityDetail setValue: info.name forKey:@"image"]; 

    NSError *error = nil; 

    // Save the object to persistent store 
    if (![context save:&error]) { 
     NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]); 
    } 

Я надеюсь, что это ясно. enter image description here

+0

Каким образом отношения «ко многим» не выполняют именно то, что вам нужно? –

+0

У меня он установлен как 1 для многих, но когда я добавляю новое значение атрибута, он создает второе значение в исходном объекте, как в описании 'TestName1', показанном выше – Sgillon

+0

, поэтому я предполагаю, что мой код неверен, поскольку он не достигает того, что я ожидаю – Sgillon

ответ

1

Конечно, это ведет себя таким образом - вы создаете новый объект Routines:

Routines *routineEntity = [NSEntityDescription insertNewObjectForEntityForName:@"Routines"inManagedObjectContext:context]; 

Если вы хотите связать новый объект RoutinesDetails с существующим Routines объекта, не создают новый объект Routines, вы используете тот, который у вас уже есть.

Учитывая, что в предыдущем комментарии явно указано, что создается новый объект, и что он относится к совершенно другому объекту, я предполагаю, что вы скопировали и вставили этот код вместо его записи. Я предлагаю пройти через учебники вместо того, чтобы пытаться заставить чей-то код работать без понимания того, что происходит.

+0

Hi Jim , Спасибо, что указали это. Я действительно написал это из моих собственных знаний (хотя и ограничен) с помощью нескольких учебников. Я понимаю принцип. Могли бы вы указать мне в правильном направлении, что заменить его, поскольку я был на этом несколько дней. :/Еще раз спасибо Джим. – Sgillon

+0

Это действительно зависит от структуры вашего приложения. Если вы показываете список 'Routines', вы должны загрузить фактический объект' Routines', который вы хотите добавить в какой-то момент. Вам просто нужно передать это через место в вашем приложении, которое создает объект «RoutinesDetails», чтобы он мог его добавить. – Jim

+0

Да, это было так. Мне удалось заставить его работать. Я передавал строку, а не объект. Виноват. Спасибо за помощь! – Sgillon

Смежные вопросы