代码之家  ›  专栏  ›  技术社区  ›  Vahid

如何设置两个对象之间的关系而不获取它们

  •  -1
  • Vahid  · 技术社区  · 8 年前

    我有两个实体: Project Production

    项目 有很多 Productions .所以项目的关系是 toMany

    我得到了所有 Projects 以及所有 制作 有两个网络请求。我把每个项目都存到 CoreData 是的。大约有10万个项目,花了我40秒,没关系。

    获得大约10万个产品并保存到CoreData需要50秒。也没关系。但我还没有建立关系。

    所以我在所有项目上设置了一个循环 NSFetchRequest 用于建立生产准备关系。

    for project in Project.getAll() {
        project.addToProductions(Produciton.getProductionById(project.producionId))
    }
    

    这个循环需要很多时间和cpu。大约10分钟后 CPU Over Budget x2 关于分析。

    如果有一种方法可以设置关系而不获得有用的结果,或者我可以切换 核心数据 SQLite Realm 是吗?

    2 回复  |  直到 8 年前
        1
  •  1
  •   vadian    8 年前

    我的建议是同时创建两个实体对象,并使用一个缓存 Project 物体。

    • 在模型中启用反向关系。
    • 两个都要 项目 Production 来自网络的数据。
    • 创建 NSCache 是的。
    • 开始创建CoreData 生产 物体。
    • 看看是否有相应的 项目 缓存中的对象。
    • 如果有一套 project 财产 项目 反对。
    • 如果没有,则创建coredata 项目 对象,并将其放入缓存中。
        2
  •  0
  •   Ali Ihsan URAL    8 年前

    您可以编写一个完成块并调用第二个函数来结束完成。