核心数据代码中的简单关系

时间:2009-07-24 11:44:04

标签: iphone cocoa core-data entity-relationship

我是一名可可新手,试图创建一个包含Core Data的iPhone应用程序。

我的问题是:我现在有一个小应用程序正在运行一个名为播放列表的实体,我在表格视图中显示,可以添加和删除条目。

我在PlayerAppDelegate中有这些:

playlistManagedObjectModel

playlistListManagedObjectContext

playlistListPersistentStoreCoordinator

添加实体:

Playlist *playlist = (Playlist *)[NSEntityDescription
    insertNewObjectForEntityForName:@"Playlist" 
             inManagedObjectContext:playlistListManagedObjectContext];

现在我想添加一个名为Song的子级别,它具有多对多的关系。

添加了播放列表属性:songRelation 歌曲属性添加:playlistRelation

我创建了这个实体,并且双向设置关系,点击Optional标记,因为我想在播放列表中至少有一首歌曲。

设置此关系后,我现在无法再创建播放列表而不会收到警告。问题是“它”也想创作一首歌,但我不知道如何。

在这种情况下,我找不到一个关于如何添加新播放列表的示例的单个地方,即何时与另一个必须添加的实体有关系。

我是否需要创建这些:

songManagedObjectModel
songListManagedObjectContext
songListPersistentStoreCoordinator

或者歌曲实体是否可以通过播放列表实体访问?

或许这样的事情:

添加播放列表

添加歌曲

设置“关系”属性(如何?)

保存到持久存储

或者????

由于没有可用的例子,我已经搜索了很多并且可能误解了一些基本内容....

RGDS PM

1 个答案:

答案 0 :(得分:7)

皮特,

PlayList模型对象上应该有一个方法,如:

- (void) addSongObject:(Song *)value;

这是一个动态生成的方法,它将Song值插入PlayList中歌曲的关系中。如果自添加Song关系后尚未生成PlayList模型对象,则该方法将不存在。因此,请确保为任何已更改的实体生成模型类。

您传递给addSongObject方法的Song对象应该使用ManagedObjectContext创建,如:

Song *song = (Song *)[NSEntityDescription insertNewObjectForEntityForName:@"Song" inManagedObjectContext:playlistListManagedObjectContext];

杰克