公共账号拖动排序解决方案

第一:本地数据持久化(可行性很差)

1、只有在第一次读取数据的时候将数据存储到本地。在之后的登录时都不进行数据请求,数据从本地取出来。

2、排序也是对本地数组进行操作,并且每次操作完都进行本地持久化操作

3、增加服务账号,将被点击关注的那行model 存到数组中,并且将该model的关注状态的字段发送到服务器上面。

4、取消关注服务账号,调用 相关管理工具,将对应模型的id字段传给服务器,如果成功,则进行对数据的对应模型进行删除,并且持久化本地

5、用户使用相同的账号在不同设备进行新增服务的时候,如果需要新增到设备上,需要进行将服务器上获取到的数组中得模型id和本地数组中得模型id进行逐一对比,如果服务器上的数组模型的中得id和本地数组中模型的id没有相比配的,则将dui对应模型加入到本地数组中并且持久化

(注意:这里有很大问题,因为如果是本地有20个,服务器上已关注的又21个,则需要进行20*21次对比,性能消耗巨大。)



这种方案,在用户使用相同账号但是不同设备登陆的时候,在不同设备新增的服务账号,在另外的设备中是更新不到的(只能用以上那种循环对比才能实现)


问题解决:

1、获取数据的时候先判断本地数组是否为空,如果未空,则将网络上获取到的数组直接展示在界面上 (解决了因为延迟问题,第一次获取不到数据的bug)

2、当用户进行DIY排序的时候,将当前数组进行本地持久化,点击的模型是本地持久化数组中存得模型(同解决获取不到数据的bug,因为这是在获取完数组并且展示之后才进行的持久化)

3、每次都是会获取数据库中得最新数据的,并且将本地持久化的model.account_id 和 数组库中获取到的model.account_id进行对比(这个算法在之前的文件中找,对比一个减一个), 如果有就不用管,如果本地有,数据库中没有,就将本地model.account_id对应的模型从本地删除,如果本地没有,数据库中有,就将模型加入到本地数组的第0位














第二:从网络获取排序序列


1、每次登录都进行网络获取,第一次会获得一个未排序的数组Arr2,并且本地也有强制关注的数组Arr1。将Arr1拼接在Arr2前面。

2、在进行排序的时候,拿到数据库对应的相关模型,拿出赋值并且移除在数据库中对应的模型,移除模型过后数据库中得序列发生改变,将拿出来的临时模型加入到已经发生改变序列的数据库中。



这种方案可解决,用户在换设备的时候,依然能读取到之前用户DIY过后的排序列表,不管是换设备新增服务还是换用户都可实现




第三: 本地排序数组 (Arr1) + 数据库获取到的数组(Arr2)  =   界面展示数组(Arr3)

1、本地排序数组Arr1 :    容量根据 Arr2.count 大小进行设置  ,这里存储了Arr2中对应model.account_id 


2、数据库获取到的数组(Arr2) :    这里有用户所关注的所有服务model,可拿到所有的获取字段 


3、界面展示数组(Arr3):   根据本地数组(Arr1)对应的顺序将 数据库获得的数组(Arr2) 中对应的模型组合起来,放入这个数组。


原理:

在本地进行排序,根据排序,把数据库上对应的模型拿下来,存储到_showArray 中

用户操作的是_showArray,并将_showArray中得model.account_id 依次放入 _localityArray

,_localityArray 中存储的是NSString类型,_showArray中存储的是NSObject 类型的,_dbArray存储的是从数据库中拿到的NSObject类型的

和之前的原理差距很大。

之前原理是   将从数据库中拿到的模型放入本地数组,从本地读取模型、








最佳解决方案:























  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值