我的核心數據模型是這個樣子:核心數據的最佳實踐來獲取到許多對象
Song
=====
name
duration
album
inPlaylists (to many relationship)
Playlist
========
title
songs (to many relationship)
每個Playlist
有Song
反之亦然許多一對多的關係。
我有一個播放列表視圖控制器,它提供了一個Playlist
對象的列表。
要填充播放列表的tableview我用創建NSFetchRequest
的常規方式,用NSFetchedResultsController
使用它:
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Playlist"];
request.predicate = nil;
request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"title" ascending:YES]];
request.fetchBatchSize = 20;
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.context
sectionNameKeyPath:nil
cacheName:nil];
一旦用戶點擊一個播放列表行,我要推的是顯示播放列表中的歌曲其他視圖控制器。
我的問題是如何獲取播放列表歌曲? 我知道我有播放列表對象,所以我可以通過調用playlist.songs.allObjects
來獲取它的歌曲數組,但我不確定這是多高效,並且我想使用NSFetchedResultsController
,因此我可以使用它的所有委託方法來更新tableview。
那麼這種基本情景的最佳做法是什麼?
順便說一句,因爲你可以看到播放列表實體沒有playlistId
屬性,我讓核心數據處理鍵,所以如果可能的話,我寧願不添加此屬性。
非常感謝!還有一個問題,如果從歌曲到播放列表的關係是「一對一」(即歌曲只能有一個播放列表),現在應該是什麼謂詞? – Eyal
@ user3149567:只需省略ANY:'...「inPlaylist = @」,selectedPlaylist]'。 –
謝謝你的幫助:) – Eyal