如何使用Core Data将子查询作为属性执行?

时间:2013-03-14 20:22:13

标签: iphone ios objective-c core-data

我有一个名为“Genre”的实体,它具有genreID和parentGenreID属性。我想创建一个动态属性,它给出了Genre实体的计数,其中parentGenreID等于行的genreID,这样我就不必查询每个返回行的计数。

如果我在SQL中这样做,我会使用查询:

SELECT g.title, (SELECT COUNT(*) FROM genres sg WHERE sg.parentGenreID = g.genreID) as subgenres FROM genres g

我想也许一个Fetched Property就是答案,但那些似乎是作为NSArrays返回的,我仍然在试图弄清楚适当的语法是什么。

我最好的猜测是:

SUBQUERY(Genre, $genre, $genre.parentGenreID = $FETCH_SOURCE.genreID).@count

在Core Data中执行此操作的正确方法是什么?

1 个答案:

答案 0 :(得分:-1)

使用NSPredicate,您可以将条件设​​置为parentGenreID=genreID。不使用executeFetchRequest,而是使用countForFetchRequest来获取计数,然后再次使用带有subgenres IN的NSPredicate executeFetchRequest,它会返回包含您所期望的标题的记录。