1

我的核心數據模型:核心數據一對多的關係作爲NSOrderedSet

Playlist 
======= 
name 

songs (to-many relationship to Song objects, NSOrderedSet) 

播放列表擁有多首歌曲,而歌曲順序是非常重要的。
使用NSOrderedSet我可以保留歌曲順序,問題是當我想要在表格視圖中獲取並播放播放列表的歌曲時,我不知道如何使用NSFetchRequest的優勢。

這是我取的播放列表中的歌曲:

NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Song"]; 
request.predicate = [NSPredicate predicateWithFormat:@"ANY playlists = %@", self.playlist]; 
request.sortDescriptors = // ??? 
request.fetchBatchSize = 20; 

self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request 
                    managedObjectContext:managedObjectContext 
                     sectionNameKeyPath:nil 
                       cacheName:nil]; 

其實這是行不通的,因爲NSFetchedResultsController需要與某種描述爲獲取請求。

所以我有歌曲順序,但我不能按照順序來獲取它們?

回答

-1

我已經在過去做到了這一點:

添加這個方法你的歌NSManagedObject子類:

- (NSUInteger)indexInPlaylist 
{ 
    NSUInteger index = [self.playlist.songs indexOfObject:self]; 
    return index; 
} 

然後你就可以在你的排序使用此方法描述符爲您的NSFetchedResultsController:

fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"indexInPlaylist" ascending:YES]]; 
+0

如果一首歌可以在許多播放列表中怎麼辦? – Mario

+0

那麼你的歌曲關係是多對多的,要完全誠實,我從來沒有嘗試過這種設置。 – random

+1

這不起作用,如果核心數據是SQL備份,我得到followign錯誤:keypath indexInPlaylist找不到實體