具有多对多关系的核心数据/

时间:2011-10-13 12:26:48

标签: iphone core-data

我正在使用核心数据。我有2个实体音乐和歌词。我创建了与逆和To-many的关系musicTolyrics。我必须为一首歌保存多个时间戳和歌词。我正在使用此代码

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

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

lyrics.lyricsTomusic = music;

这是在coredata中保存的。但我想保存一首歌的记录数量......就像外键一样..我怎么能这样做?请帮忙。

提前致谢

1 个答案:

答案 0 :(得分:0)

看起来你的逆是错误的方式。而不是“音乐”,这是非常模糊的,让我们称之为“歌曲”。所以,Song有“歌词”。其他歌曲也可以使用相同的Lyrics

到目前为止,我们有多对一的关系,因为很多歌曲都可以使用相同的歌词。

我建议您将其映射到Core Data建模器中。然后,自动生成类文件。然后,您将看到在多对多关系中,您可以将一个对象添加到一个集合中,因此您将拥有例如:

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

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

这是Core Data中的两个对象。现在用逆向定义关系:

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

如果您在模型中正确设置,您会看到自动为您生成的方法addSongObject