CoreData:添加两级fetchRequest

时间:2011-05-05 14:50:09

标签: database ios core-data fetch

我有一个存储电影和演员的核心数据。 我通过json获得了电影列表。每部电影都有演员(演员,角色)

所以我有Movie,Actor,ActorRole实体。 当我收到电影列表(每部电影都有一个独特的movieid)时: - 获取当前数据库中的所有电影 - 我创建了一个ExistingMoviesID的NSSet - 我创建一个newMoviesID的NSSet - 我做一个减号来获得所有真正的新电影 - 我循环遍历那些newItems以将它们添加到CoreData

这非常快,因为我只做一次获取请求。 现在,当我想将演员表添加到数据库时,它变得非常慢 我在添加新电影时做的事情: - 获取演员ID - 为该Actor ID创建FetchReqyest - 执行FetchRequest - 如果没有找到我添加一个新的actor,否则在CoreData中获取一个 - 我创建了ActorRole,它创建了Movie和Actor之间的关系

我觉得这个速度非常慢,因为我为每部电影做一次Fetch 所以我正在寻找更好的方法来实现它。

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:0)

您可以使用Actor运算符一次性获取所有现有IN个对象,以获取数组中具有actor_ID值的所有Actor对象。像这样:

NSPredicate *P=[NSPredicate predicateWithFormat:@"actor_ID IN %@", arrayOfIdValues];

这会加快Actor抓取速度,这似乎是您的瓶颈。