2014-01-16 4 views
0

У меня есть следующие отношения между моими сущностями. enter image description hereСоздайте отношения между различными ViewControllers

У меня есть 2 ViewControllers. 1 Где вы добавляете плейлист и 1, где вы добавляете песню. Мой вопрос в том, как может песня ViewController узнать, какой плейлист ей нужен, чтобы связать песню и создать связь с этим точным плейлистом?

PlaylistViewController.m (Это где я сохранить свои плейлисты)

-(void)saveTap:(id)sender{ 
    Playlists *newManagedObject = (Playlists*)[NSEntityDescription insertNewObjectForEntityForName:@"Playlists" inManagedObjectContext:_managedObjectContext]; 
    [newManagedObject setValue:self.textfield.text forKey:@"playlistName"]; 


    // Save the context. 
    NSError *error = nil; 
    if (![_managedObjectContext save:&error]) { 

     NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
     abort(); 

    } 

    [self fetchDevices]; 

} 

SongsViewController.m (Это где песни сохраняется)

-(IBAction)songsDone:(id)sender{ 

    AppDelegate *appDelegate = 
    [[UIApplication sharedApplication] delegate]; 

    NSManagedObjectContext *context = 
    [appDelegate managedObjectContext]; 
    NSManagedObject *newManagedObject; 
    newManagedObject = [NSEntityDescription 
       insertNewObjectForEntityForName:@"Songs" 
       inManagedObjectContext:context]; 
    NSDate *today= [NSDate date]; 


    [newManagedObject setValue:video.author forKey:@"author"]; 
    [newManagedObject setValue:video.videoid forKey:@"link"]; 
    [newManagedObject setValue:video.title forKey:@"songName"]; 
    [newManagedObject setValue:today forKey:@"created"]; 



    // Save the context. 
    NSError *error = nil; 
    if (![_managedObjectContext save:&error]) { 

     NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
     abort(); 

} 

Song.h (Entity)

@class Playlists; 

@interface Songs : NSManagedObject 

@property (nonatomic, retain) NSString * author; 
@property (nonatomic, retain) NSDate * created; 
@property (nonatomic, retain) NSString * link; 
@property (nonatomic, retain) NSString * songName; 
@property (nonatomic, retain) NSSet *songs; 
@end 

@interface Songs (CoreDataGeneratedAccessors) 

- (void)addSongsObject:(Playlists *)value; 
- (void)removeSongsObject:(Playlists *)value; 
- (void)addSongs:(NSSet *)values; 
- (void)removeSongs:(NSSet *)values; 

@end 

Плейлисты.m (Организация)

@class Songs; 

@interface Playlists : NSManagedObject 

@property (nonatomic, retain) NSString * playlistName; 
@property (nonatomic, retain) NSSet *list; 
@end 

@interface Playlists (CoreDataGeneratedAccessors) 

- (void)addListObject:(Songs *)value; 
- (void)removeListObject:(Songs *)value; 
- (void)addList:(NSSet *)values; 
- (void)removeList:(NSSet *)values; 

@end 
+0

Возможный дубликат [Передача данных между контроллерами просмотра] (http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers) –

+0

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

ответ

0

Вы должны предложить пользователю какой-либо способ выбора плейлиста, который должен быть связан с песней. 2 общие опции:

  1. Выберите плейлист, чтобы просмотреть и отредактировать содержащиеся в нем песни (чтобы плейлист был передан от первого контроллера ко второму).
  2. Покажите информацию о песне и нажмите кнопку, чтобы отобразить сборщик списков воспроизведения (может быть просмотрщиком или табличным представлением). Это использует делегирование, чтобы вернуть список воспроизведения в контроллер песни.

После того как вы playlist и song управляемых объектов, использование:

[playlist addSongsObject:song]; 

перед сохранением контекста (который будет обновляться и объекты отношений, поскольку они являются обратными).

+0

У меня уже есть такие вещи. Проблема в том, как связать песни с плейлистом. Я попытался связать песни с помощью списка воспроизведения ObjectID или indexpath.row, но они будут меняться при удалении строки и перезапуске приложения. – user3195388

+0

и как песня будет знать, какая из других ViewController выбрана. мне нужно передать что-то между viewcontrollers? – user3195388

+0

Да, вам нужно передать объект плейлиста в контроллер просмотра песни. Для настройки отношений необходимо, чтобы оба экземпляра управляемых объектов были настроены. – Wain

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