【问题标题】:Core data with to-many relationship/具有一对多关系的核心数据/
【发布时间】:2011-10-14 05:15:35
【问题描述】:

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

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

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

lyrics.lyricsTomusic = music;

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

提前致谢

【问题讨论】:

    标签: iphone core-data


    【解决方案1】:

    看起来你的逆方法是错误的。与其说是相当含糊的“音乐”,不如称它为“歌曲”。所以,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

    【讨论】:

    • 如果您的模型正确,您甚至不需要将mySong 对象添加到myLyrics。在Song 上设置歌词将自动处理反向关系。
    • 不。我想要的关系就像歌曲可能有许多带有歌词的时间戳。。歌词不能共享一首以上的歌曲
    • 啊,好的。时间戳代表什么?是歌曲的长度,还是歌曲中的某个点?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多