0

Это структура архитектуры coredata. enter image description herecoredata- отношения не могут правильно вести себя

После добавления записей в «Художники», их использование для добавления новых альбомов работает отлично.

enter image description here

Но проблема, как показано на img- 2 & 3, после присвоения "Майкла Джексона в альбом«Insomniac 2010»& затем добавить же художника к«Ребенок футов Ludacris»теряет ссылку из альбома «Insomniac».

Это код, где я сохранить контекст в AlbumDetailViewController.h

- (void)EntityRecordstableview:(UITableView *)tableView didselectrowatindexpath:(NSIndexPath *)indexPath forentity:(id)entity 
{ 
    Artist *selectedArtist = entity; 

    UITableViewCell * cell = [tableView cellForRowAtIndexPath:indexPath]; 
    [cell setSelected:NO animated:YES]; 

    if ([self.pickedArtists containsObject:selectedArtist]) { 
     [self.pickedArtists removeObject:selectedArtist]; 
     [cell setAccessoryType:UITableViewCellAccessoryNone]; 
     editingAlbum.artist = self.pickedArtists; 
     [self saveTheContext:editingAlbum.managedObjectContext]; 
//  NSLog(@"%d",self.pickedArtists.count); 
    } 
    else { 
     [self.pickedArtists addObject:selectedArtist]; 
     [cell setAccessoryType:UITableViewCellAccessoryCheckmark]; 
     editingAlbum.artist = self.pickedArtists; 
     [self saveTheContext:editingAlbum.managedObjectContext]; 
//  NSLog(@"%d",self.pickedArtists.count); 
    } 
} 

Я думаю, что должны быть какие-то проблемы в сохранении managedObjectContext. ли оно должно быть, как это вместо того, чтобы

self.managedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; 
[self saveTheContext:self.managedObjectContext]; 

из

[self saveTheContext:editingAlbum.managedObjectContext]; 

Я попытался это, но это также не в состоянии работать в соответствии с ожиданиями.

You can find my source code here

ответ

3

Я обновил ваш код. Пожалуйста, проверьте то же самое. Их проблема в отношениях между Художник & Альбом. Это должно быть Многим.

Отношение между Альбом & Исполнитель является 1 ко многим. Следовательно, если вы выберете «Исполнитель» для нескольких альбомов, тогда он переопределит его значение. Пожалуйста, проверьте свою базу данных для этого.

Код: Click Here

+1

Привет, спасибо. Спасибо за обновление моего кода. Это похоже на то, что я сделал плоскую тарелку готовой для меня. :) Спасибо Вам большое –

1

Каждый художник может иметь много альбомов, но в зависимости от модели каждый альбом может содержать много художников. Отношение to-many должно быть отменено или заменено на многие-на-многие (каждый альбом может содержать много артистов, и у каждого художника может быть много альбомов)

Тип альбома - тип песни также может быть проблемой позже .. .

+0

Привет, друг. Подтвердил ответ за большие объяснения. Я сделаю изменения, которые вы предложили. большое спасибо. –

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