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 

이것은 명백한 많은-2-많은 경우입니다,이 관계 문제 : 재생 목록은 다음과 같이 될 수 있도록,

나는 노래와 재생 목록을 가지고 있고, 나는 주문 번호를 관련 싶어 관련 테이블에 저장된 주문 번호와 함께 (나는 그것이 표준이 아니다); 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 

을 할 거라고하지만 지금은 모르는 방법 :)) 특정 인덱스 B의 재생 목록에서 노래를 넣어 올바른 순서로 C를 재생 목록에서 노래를 얻을

) 재생 목록 순서를 수정하십시오.

아무도 나를 도울 수 있습니까?

답변

1

SongInPlaylist에는 position 속성이 필요합니다. 그런 다음 PlayList에 인덱스에 삽입하거나 다른 인덱스로 이동하거나 다른 SongInPlaylist 엔터티의 위치 값을 고정시키는 인덱스를 제거 할 수있는 메소드를 제공 할 수 있습니다.

+0

실제로 나는 이미 그 말을 잊어 버렸습니다. 제가 누락 된 부분은 노래와 재생 목록을 모두 지정하는 SongInPlaylist에 항목을 만드는 방법입니다. – kappa

+0

UI를 모른 채 자세히 대답하는 방법을 모르겠지만 기본적으로 사용자는 "이것을 넣으십시오. 해당 재생 목록의 일부 위치에서 노래 "를 선택하십시오. 이에 따라 새로운 SongInPlaylist 엔티티를 만들고 세 필드를 채 웁니다. (나는 당신이 노래와 플레이리스트 객체를 모두 가지고 있다고 가정하고 있습니다. 왜냐하면 아마 당신은 어떤 방법으로 그것들을 사용자에게 보여줄 것이기 때문입니다.) –

+0

다른 것은 ... 직접적인 데이터베이스 프로그래밍에서는 일반적이지만, Core Data에서는 엔티티를 직접 사용합니다 (객체에 실제 ID 필드가 필요하다고 생각한 경우). –

0

"PlaylistEntry"와 같은 중간에 항목을 추가합니다. 노래를 가리키며 주문을위한 필드가 있습니다. 노래가 아닌 PlaylistEntries에서 직접 재생 목록을 만드십시오. 그런 다음 주문 필드를 정렬하고 조작하여 재생 목록 정렬을 변경할 수 있습니다.

+0

답변 해 주셔서 감사합니다. Philip Mills에 게시 한 의견도 귀하의 답변에 유효합니다. – kappa

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]; 
+0

Phillip Mills의 제안에 정확히 따른 것입니다. 어쨌든 고맙습니다. – kappa

0

이것은 순서 관계에 이상적인 사용법입니다. 데이터 모델 편집기에서 "Ordered"박스를 선택하기 만하면 각 재생 목록에 처 음 순서대로 노래에 대한 참조가 저장됩니다.

관련 문제