ios - 如何识别从集合(数组)中删除的对象?
问题描述
我有以下代码来处理拉动刷新响应
let copyData = data.reversed() // it is pull to refresh response (load page 1)
for (_,element) in copyData.enumerated() {
let foundElement = allObjects.filter{$0.id == element.id} // Find element in main array
if let firstElement = foundElement.first, let index = allObjects.index(of: firstElement) {
allObjects[index] = element // Replace if found
} else {
allObjects.insert(element, at: 0) // Insert if not found
}
}
self.arrayPosts = allObjects
可编码类在哪里data
,它是拉动刷新的 API 响应。allObjects
是带有分页的预加载数据
问题:假设在allObjects
我有 50 个对象(5 个 10 个 ID 的页面是(1 到 50))用户拉刷新我从 API 加载第一页(ID 1,2,3,4,5,6,7,10, 11)那么如何识别哪个对象被删除(8,9)?
我应该将allObjects
第 10 个索引与data
第 10 个索引对象的 ID 进行比较吗?
这是更好的处理方法吗?请建议
解决方案
不要比较页面(即一次 10 个项目) - 如果添加/删除一个项目,页面将不同步,您最终会丢失/重复对象。
大概你的对象是按一些键/日期等排序的。
- 取最后一个下载对象中键的值。
- 将所有具有键 <= 最后一个键的现有对象复制到一个新数组中。
- 将您下载的阵列与此子阵列进行比较。
- 应删除已下载数组中不在子数组中的对象。
推荐阅读
- java - Java - “this”的特定用法存在问题
- html - 如何链接到展开/折叠部分并自动打开?
- reactjs - “npm install”不会安装所有依赖项
- html - 防止浮动 div 换行错误
- c++ - 什么可能导致以下代码中出现“未定义的引用”错误?
- python - 为什么 tox 面临 Pytest 版本冲突?
- python - 从一个表中提取小时值并在另一个表中填充一小时增量的“桶”的函数
- spock - 如何从 spock 测试框架访问 application.yml 文件
- mysql - 计算数据类型 TIME 的十进制数
- java - 在 Android API28 上关闭应用程序时,WorkManager 不会定期运行