通过Web服务获取iCloud备忘录表格时响应单元格顺序错乱问题求助
iCloud备忘录表格附件单元格乱序问题解决方案
核心排序依据
你解码获取的Crframework Protocol Buffer结构中,存在两个容易被忽略的内置字段,可直接用于确定单元格的正确顺序:
- 每个单元格对应
ICSTableCell结构下的row_position(uint32类型):记录单元格所属行的全局排序序号,从0开始递增 - 每个单元格对应
ICSTableCell结构下的column_position(uint32类型):记录单元格在所属行内的列排序序号,从0开始递增
操作流程
- 遍历所有解码后的单元格对象,分别提取每个单元格的
row_position、column_position和内容存储字段 - 对全部单元格先按
row_position升序做一级排序,将同属一行的单元格归为同一组 - 对每组内的单元格,按
column_position升序做二级排序,最终得到的行列顺序和原备忘录表格完全一致 - 原表格中的空单元格对应位置不会返回单元格对象,排序后对应位置自动留空即可,无需额外补位处理
旧版本兼容方案
如果处理iOS 13及更早版本生成的备忘录表格时遇到row_position、column_position字段缺失的情况,可使用Versioned-Document结构中的edit_sequence字段辅助排序:同一行内的单元格编辑序列号差值不会超过12,先按序列号范围做行分组,再按序列号升序做组内列排序即可还原正确顺序。
内容的提问来源于stack exchange,提问作者Deb Sourav
相关产品推荐
相关产品推荐

