1

我有一个领域列表,比如领域对象中的学生列表,比如班级。我想请求给定班级的学生名单并在 studentList 中更新相同的学生名单。服务器返回的 studentList 可能包含旧学生和新学生。所以我希望我的 realmList 更新老学生的信息以及添加新学生(如果有的话)。

我所做的是,

  1. 使用 size == serverReturnedStudentList.size() 启动循环
  2. 在循环中创建学生并添加到领域(使用 realm.copyToRealmOrUpdate(student))
  3. 从步骤 2 接收托管学生对象。
  4. 获取班级 X 的学生列表并检查学生列表是否包含该 managedObject。
  5. 如果没有,则将学生添加到 studentList 中,否则什么也不做。

它按预期工作,但我知道这不是正确的方法。如果我跳过“包含”检查 (@step4) 并直接将托管对象添加到 realmList,则会在 realmList 中开始显示多个条目。

处理这种情况的最佳方法是什么?

另一个问题是,我在每个班级下都有“n”个班级和“x”个部分。我正在并行发出 nx 个请求,当我尝试启动 asyncExecutions nx 次时,我得到池大小限制异常(这很明显)并且我无法在 UI 线程上运行它,因为我的 UI 在 3-5 秒内无响应(而每个学生列表的循环都通过每个学生的 executeTransaction 执行)

任何帮助/建议将不胜感激。

提前致谢。干杯!

4

1 回答 1

0

这种方法对我来说似乎没问题。您需要了解的一件事是,用于更新 realmList 的copyToRealmOrUpdate()不会复制具有相同Primary Key的条目的数据。

于 2017-04-11T14:50:53.060 回答