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

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

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类型的

和之前的原理差距很大。

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

最佳解决方案:

时间: 2024-08-02 22:39:43

公共账号拖动排序解决方案的相关文章

记一个react拖动排序中的坑:key

在做一个基于react的应用的时候遇到了对列表拖动排序的需求.当使用sortable对列表添加排序支持后发现一个问题:数据正确排序了,但是dom的顺序却乱了,找了一会儿原因后发现是因为在渲染数据的时候指定了一个动态的key(map((o,i)=>(<li key={i}></li>))),导致了dom顺序混乱.解决方案有:将数据装入模型的时候生成一个不重复的key,或者使用lodash的uniqueId: import uniqueId from 'lodash/unique

微信公共账号学习笔记 _ 感想 爪机码字

昨晚看了下微信公共账号的资料,做了个小东西,以下是第一时间的感受.估计好多看法是错的,逐渐纠正吧. 1.输入方式 微信公共账号有如下几种获得输入的方式:用户被动接收.从菜单选择.用户发送文字.用户拍照发送.用户发送地理位置(从文档看这个是被动的).用户扫二维码.用户发语音.跳到定制页面上点击或输入. 把手机优势利用得很充分.没大屏没键盘的特点也鲜明. 做辅助应用可r以.做手机互联网入口也可以.做主干应用,力不从心. 自然语言处理还是王道! 目前文本交流也就限于dos式命令输入和当google搜索

jquery 鼠标拖动排序Li或Table

1.前端页面 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="拖动排序Li或Table.aspx.cs" Inherits="拖动排序Li或Table" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o

锋利的jQuery-7--query ui效果库--拖动排序插件sortable

一个简单的拖动排序效果,具体请参看jQuery ui官网demo. jquery ui :http://jqueryui.com/ sortable例子:http://jqueryui.com/sortable/#portlets 效果如图: html代码: <style type="text/css"> #myList{width: 80px;background: #EEE;padding: 5px;list-style: none;} #myList a{text-d

avalon js实现仿google plus图片多张拖动排序

转载请注明: TheViper http://www.cnblogs.com/TheViper  效果 google plus 拖动+响应式效果: 要求 1. 两边对齐布局,即图片间间距一致,但左右两边的图片与边界的间距不一定等于图片间间距,兼容ie7,8,firefox,chrome.2. 浏览器尺寸变化,在大于一定尺寸时,每行自动增加或减少图片,自动调整图片间间距,以满足两边对齐布局,这时每张图片尺寸固定(这里是200*200px):而小于一定尺寸时,每行图片数量固定(这里最小列数是3),这

IOS UITableView拖动排序功能

UITbableView作为列表展示信息,除了展示的功能,有时还会用到删除,排序等功能,下面就来讲解一下如何实现排序. 排序是当表格进入编辑状态后,在单元格的右侧会出现一个按钮,点击按钮,就可以拖动单元格,移动位置,进行手动排序. 使用系统自带拖动排序功能的步骤: 1.让tableView进入编辑状态,也就是设置它的editing为YES 2.返回编辑模式,也就是实现UITableViewDelegate中的tableview:editingStyleForRowAtIndexPath:方法,在

#研发解决方案介绍#基于ES的搜索+筛选+排序解决方案

郑昀 基于胡耀华和王超的设计文档 最后更新于2014/12/3 关键词:ElasticSearch.Lucene.solr.搜索.facet.高可用.可伸缩.mongodb.SearchHub.商品中心 本文档适用人员:研发和运维 提纲: 曾经的基于MongoDB的筛选+排序解决方案 MongoDB方案的缺陷 看中了搜索引擎的facet特性 看中了ES的简洁 看中了ES的天生分布式设计 窝窝的ES方案 ES的几次事故和教训 ES自身存在的问题 首先要感谢王超和胡耀华两位研发经理以严谨治学的研究精

android可拖动排序GridView实现

经常使用今日头条.网易新闻的同学们应该都会注意到用于管理多个频道的可拖动排序GridView,下面介绍一下可拖动的DragGridView的实现方法.代码放在GitHub上https://github.com/zhaoyu87/DragGridView,需要的同学可以下载 DragGridView继承自GridView,当长按选中某个item进行拖动,放手更新GridView顺序: 1.重写onTouchEvent响应拖动事件:被按下时记录按下坐标:拖动时更新被拖动视图显示:放开时更新排序 2.

可拖动排序的ListView

一.上图 二.简述 1.需要实现的效果是长按右侧可拖动部分布局实现列表项的拖动排序 2.当点击列表项前面的单选按钮时,在该条目右侧显示删除图标,点击该图标删除当前条目. 三.实现思路 借助github上的开源代码drag-sort-listview-master加以改造. 四.主要源码展示 1.Activity代码 package com.gengducun.dslvdemo; import java.util.ArrayList; import android.app.Activity; im