2011-10-13 140 views
1

我正在使用核心數據。我有2個實體音樂和歌詞。我創建了關係musicTolyrics與反和To-many。我必須爲一首歌曲保存時間戳和歌詞的數量。我使用這個代碼核心數據與對多關係/

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

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

lyrics.lyricsTomusic = music; 

這是保存在coredata。但我想保存1首歌曲的記錄數量......就像外鍵......我該如何做到這一點?請幫忙。

在此先感謝

回答

0

它看起來像你的逆是錯誤的方式。我們把它叫做「Song」,而不是那種非常含糊的「音樂」。所以,Song有「歌詞」。其他歌曲也可以使用相同的Lyrics

到目前爲止,我們有多對一的關係,因爲許多歌曲可以使用相同的歌詞。

我推薦的是你在覈心數據建模器中映射出來的。然後,自動生成類文件。然後你會看到,在一對多的關係,您可以將對象添加到組,所以你必須例如:

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

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

這是核心數據的兩個對象。我們定義與逆的關係:如果您在模型中正確設置好了

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

,你會看到自動爲您生成的方法addSongObject

+0

如果你對它進行了正確的建模,你甚至不需要將'mySong'對象添加到'myLyrics'。設定'Song'上的歌詞將自動處理相反的關係。 –

+0

沒有..我想要像歌曲一樣的關係可能有多少個帶歌詞的時間戳..沒有歌詞可以分享多首歌曲 – iProgrammer

+0

啊,好的。時間戳代表什麼?這是歌曲的長度,還是歌曲中的一個點? –