2

私はコアデータベースのアプリケーションに取り組んでおり(私はsqliteでの作業に慣れていますが、今回は何か新しいことを学びたいと思っていました)、この関係の問題で立ち往生しています:

曲とプレイリストがあり、それらを注文番号に関連付けたいので、プレイリストは次のようになります。

 - "Playlist A"   
       1. Song A  
       2. Song C  
       3. Song B
 - "Playlist B" 
       1. Song C  
       2. Song A  
       3. Song B
       4. Song F
       5. Song E

これは明らかな多対多のケースであり、関連するテーブルに注文番号が格納されています(標準ではないことはわかっています)。SQLで私はします

  Table  "Songs"  (id, name, ecc..)
  Table  "Playlists" (id,name, ecc..)
  Table  "PlaylistSongs" (playlist_id,song_id,position)

In Core Data i did:
      Entity "Song"
      Entity "Playlist"
      Entity "SongInPlaylist"

with this relation:
  Song <---->> SongInPlaylist
  Playlist <----->> SongInPlaylist

しかし今、私は方法がわかりません:

a)特定のインデックスでプレイリストに曲を配置しますb)プレイリスト内の曲を正しい順序で取得しますc)プレイリストの順序を変更します。

誰かが私を助けることができますか?

4

4 に答える 4

1

SongInPlaylistにはposition属性が必要なようです。次に、PlayListに、インデックスに挿入したり、あるインデックスから別のインデックスに移動したり、他のSongInPlaylistエンティティの位置の値を修正するインデックスで削除したりするためのメソッドをいくつか与えることができます。

于 2012-05-18T15:33:57.213 に答える
1
Song *song = yourSong;
Playlist *playlist = yourPlaylist;
NSNumber *position = songsPositionInPlaylist;

// add song to playlist
SongInPlaylist *sip = [NSEntityDescription insertNewObjectForEntityForName:@"SongInPlaylist" inManagedObjectContext:yourContext];
sip.song = yourSong;
sip.playlist = yourPlaylist;
sip.position = songsPositionInPlaylist;

[yourContext save:nil];
于 2012-05-18T16:25:56.467 に答える
0

曲を指し、注文用のフィールドがある「PlaylistEntry」などのアイテムを中央に追加します。曲から直接プレイリストを作成するのではなく、PlaylistEntriesからプレイリストを作成します。次に、注文フィールドで並べ替えて操作し、プレイリストの並べ替えを変更できます。

于 2012-05-18T15:33:15.350 に答える
0

これは、順序付けられた関係の理想的な使用法のようです。データモデルエディタの[順序付け]ボックスをオンにするだけで、各プレイリストに指定した順序でその曲への参照が保持されます。

于 2012-05-18T16:59:16.357 に答える