美文网首页
Swift+Realm1.0.1+Alamofire(二)

Swift+Realm1.0.1+Alamofire(二)

作者: 童星 | 来源:发表于2016-07-12 10:56 被阅读62次

Q:怎么交换或者移动realm数据库里面的两条记录?

  • 需求:
    我要移动cell或者交换cell上的两条数据模型,下次展示这个页面以我现在更改的顺序出现。
  • 思路:
    因为数据是从网络获取,然后更新数据库,然后读取出来,所以要想改变顺序只有两种方法:

    1.对查询结果按照自己想要的查询条件进行排序,但是这样好像每次都需要对其查询操作,显然不是太好。
    2.直接对realm数据库里面的记录进行移动或者交换,于是去查询realm的源代码,发现了两个方法:
移动和交换

具体实现方法如下:


    /**

     Replaces an object at the given index with a new object.

     - warning: This method may only be called during a write transaction.

     - warning: This method will throw an exception if called with an invalid index.

     - parameter index:  The index of the object to be replaced.

     - parameter object: An object.

     */
    public func move(from from: Int, to: Int) { // swiftlint:disable:this variable_name

        throwForNegativeIndex(from)

        throwForNegativeIndex(to)

        _rlmArray.moveObjectAtIndex(UInt(from), toIndex: UInt(to))

    }

    /**

     Exchanges the objects in the list at given indices.

     - warning: This method may only be called during a write transaction.

     - warning: This method will throw an exception if called with invalid indices.

     - parameter index1: The index of the object which should replace the object at index `index2`.

     - parameter index2: The index of the object which should replace the object at index `index1`.

    */

    public func swap(index1: Int, _ index2: Int) {

        throwForNegativeIndex(index1, parameterName: "index1")

        throwForNegativeIndex(index2, parameterName: "index2")

        _rlmArray.exchangeObjectAtIndex(UInt(index1), withObjectAtIndex: UInt(index2))

    }

使用:

realm数据库因为是无序的,但是它提供了一个List类型的集合(关于List的介绍可以去看官方文档),被加入到List集合中的Object可以保证有序的插入,所以,假如我要改变文章ArticleDAO模型的展示顺序,那么我可以新建一个ArticleDAOList模型,然后添加:

    let list = List<ArticleDAO>()

来存放ArticleDAO,这样ArtucleDAO的插入顺序就可以保证了,将ArticleDAOList,存入数据库。如果需要更改顺序,那么直接更新ArticleDAOList顺序,然后再更新数据库即可

相关文章

  • Swift+Realm1.0.1+Alamofire(二)

    Q:怎么交换或者移动realm数据库里面的两条记录? 需求:我要移动cell或者交换cell上的两条数据模型,下次...

  • Swift+Realm1.0.1+Alamofire(一)

    Q:使用realm继承的object不能实现归档解档? 当实现上面的方法的时候xcode会强制性的向你提出还需要实...

  • 二(二)

    发什么神经 突然就很想花钱 一边心疼 一边毫不在乎的花 啧 莫名其妙

  • 二,二

    2017.9.11教师节后的周一,第一次走进教室,刚站到讲台两个小可爱送给我两束花,原谅我那时候人还没有认全没有记...

  • 二〇二〇

    本来这篇小结打算年初写的,但是想想后边还有复试就先放一放,结果复试结束后过了两个月才想起要写这篇小结... 时过境...

  • 二金二木二火二土

    今天看完了极简中国史,这本书看了半个多月,因为是八十年前写的书,不是白话文,所以看的特别累。不过从近代前辈的角度去...

  • 说二『似二非二的二』

    说实话原以为他最多似二,生活小节或许专门学着似二,中枢神经应该不至于非二,没想到最近越来越疯狂地绞尽脑汁地朝着二的...

  • 二胎(二)

    今天宝宝三十周了,还有十周你就要出来了,也许会提前,妈妈和家人都很期待。 到了孕晚期,睡觉是个问题,左睡右睡都不对...

  • 二小姐(二)

    我去了李家,那环境好,夫人老爷小姐都很和蔼,我正坐在由木头和瓷做的椅子上,正等待着女管家来接我,我人生地不熟...

  • 二、递归(二)

    一、棋盘分割问题 【每次切完一个棋盘,就是需要舍弃掉一面,只能在一面操作】

网友评论

      本文标题:Swift+Realm1.0.1+Alamofire(二)

      本文链接:https://www.haomeiwen.com/subject/btjdjttx.html