2011-10-13 5 views
1

코어 데이터를 사용하고 있습니다. 나는 2 개의 엔티티 뮤직과 가사를 가지고있다. 나는 inverseThreshold와 To-many로 relationshipMusicTolyrics를 만들었다. 한 곡에 타임 스탬프와 가사의 수를 저장해야합니다. 이 코드를 사용하고 있습니다.다 대다 관계의 코어 데이터/

Lyrics *lyrics = [NSEntityDescription insertNewObjectForEntityForName:@"Lyrics" 
    inManagedObjectContext:context]; 

lyrics.Lyrics = albumTitleField.text; 
lyrics.startTime = 0.0; 

lyrics.lyricsTomusic = music; 

이것은 이것을 coredata에 저장합니다. 하지만 외장 키처럼 1 곡의 레코드 수를 저장하고 싶습니다. 어떻게해야합니까? 도와주세요.

미리 감사드립니다.

답변

0

역으로 잘못된 방법으로 보입니다. 상당히 모호한 "음악"보다는 "노래"라고 부르 자. 따라서 Song에 "가사"가 있습니다. 다른 노래들도 같은 Lyrics을 사용할 수 있습니다.

지금까지 우리는 많은 노래가 동일한 가사를 사용할 수 있다는 점에서 다 대일 관계가 있습니다.

핵심 데이터 모델러에서 이것을 매핑하는 것이 좋습니다. 그런 다음 클래스 파일을 자동으로 생성하십시오. 그런 다음 세트에 객체를 추가 할 수 있으며, 일대 다 관계에있는 것을 볼 수 있습니다, 그래서 당신은 예를 들어있을 것이다 : 코어 데이터에서 두 개체를의

Song *mySong = [NSEntityDescription insertNewObjectForEntityForName:@"Song"  
innManagedObjectContext:context]; 

Lyrics *myLyrics = [NSEntityDescription insertNewObjectForEntityForName:@"Lyrics"  
innManagedObjectContext:context]; 

합니다. 이제 역와의 관계 정의 :

Song.lyrics = myLyrics; 
[myLyrics addSongObject:mySong]; 

당신은 모델에서 제대로 일을 설정 한 경우를 자동으로 생성하는 방법 addSongObject를 볼 수 있습니다.

+0

올바르게 모델링했다면, myLong 객체에'mySong' 객체를 추가 할 필요조차 없습니다. 노래에 가사를 설정하면 자동으로 반대 관계가 처리됩니다. –

+0

아니요. 노래와 같은 관계 가사가있는 시간 스탬프가있을 수 있습니다. 노래 가사가 둘 이상의 노래에 대해 공유 될 수 없습니다. – iProgrammer

+0

아, 좋아요. 타임 스탬프는 무엇을 나타 냅니까? 노래의 길이입니까, 아니면 노래의 포인트입니까? –

관련 문제