将coreData加入除主键之外的属性上

时间:2012-01-08 00:51:34

标签: ios core-data

所以我有一本诗集。

每首诗都有作者,页面上可能有一首以上的诗。 我的数据库结构看起来有点像这样

诗歌(PoemName,PoemAuthor, pageNumber

页(的PageNumber ,下载)

我正在尝试编写一个接受作者姓名的方法,并下载该作者出现的所有页面(仅当他们尚未下载该页面时)。

在SQL中我只想这样查询:

SELECT poems.pageNumber 
FROM poems 
JOIN pages ON Poems.pageNumber = pages.pageNumber 
WHERE poems.PoemAuthor='foo' AND downloaded=1
GROUP BY pages.pageNumber;

不幸的是,我无法正确加入页码。相反,核心数据会尝试将表插入到已插入的主键上。

基本上,我需要知道如何调整表之间的关系,以便我可以将它连接到pageNumbers而不是coreData的主键。

1 个答案:

答案 0 :(得分:1)

核心数据不是数据库抽象层,它是对象图管理框架(以及更多)。您不应该关注连接和列。

如果Poem对象与Page对象相关,那么您应该只在模型中定义该关系。我来自SQL背景,当我考虑逻辑实体及其关系时,我发现Core Data更易于理解,而不是底层实现(在任何情况下都不必是Core Data中的SQL)。