CoreData:添加时的两级 fetchRequest
Posted
技术标签:
【中文标题】CoreData:添加时的两级 fetchRequest【英文标题】:CoreData: two level fetchRequest on addition 【发布时间】:2011-05-05 14:50:09 【问题描述】:我有一个存储电影和演员的核心数据。 我通过json获取电影列表。每部电影都有演员(演员、角色)
所以我有 Movie、Actor、ActorRole 实体。 当我收到电影列表时(每部电影都有一个唯一的电影 ID): - 获取当前在我的数据库中的所有电影 - 我创建了一个现有MoviesID 的 NSSet - 我创建了一个 newMoviesID 的 NSSet - 我做了一个减法设置来获得所有真正的新电影 - 我循环遍历这些新项目以将它们添加到 CoreData
这非常快,因为我只执行一个获取请求。 现在当我想将演员添加到数据库时它变得非常慢 添加新电影时我现在做什么: - 获取演员 ID - 为那个 Actor ID 创建 FetchReqyest - 执行 FetchRequest - 如果没有找到我添加一个新的演员,否则在 CoreData 中获取一个 - 我创建了创建电影和演员之间关系的 ActorRole
我认为这非常慢,因为我为每部电影做一次 Fetch 所以我正在寻找更好的方法来完成它。
有什么想法吗?
谢谢
【问题讨论】:
【参考方案1】:您可以使用IN
运算符一次性获取所有现有的Actor
对象,以获取数组中具有actor_ID 值的所有Actor 对象。像这样:
NSPredicate *P=[NSPredicate predicateWithFormat:@"actor_ID IN %@", arrayOfIdValues];
这将加快您的Actor
获取速度,这似乎是您的瓶颈。
【讨论】:
以上是关于CoreData:添加时的两级 fetchRequest的主要内容,如果未能解决你的问题,请参考以下文章