其实应该是要先写如何使用Realm才对。
但我现在只是要找个地方做个纪录。
有空有时间时再来介绍Realm.io
使用语言:swift
语言版本:3.0
资料库封装:Realm
资料库:Realm > 2.4.1
使用套件:Cocoapods RealmSwift
目的:在不设置「资料顺序排列栏位」的状况下,做二笔资料的顺序对调。
原因:Realm的资料排序是按照存入资料库的时间来排序的。所以在基于这个则下来动态性质的做到排序或交换资料顺序。
具体关键:Realm所提供的List封装
具体做法:
首先,要做到排序,你的资料必须是父表设定的List型态。(子表owner对应父表List属性栏位)
我目前还没测出如果不是List栏位所设定的子表资料怎么排序…
但可以确定的是父表子表有做List - Owner关连时,就可以进行List排序。
(事实上这本来也合理,因为你要排序的对像象应该是有关的资料而非无关的也纳进来)
当然如果有谁知道非List也能做全表排序的话欢迎提供一下方法。
let realm:Realm = try! Realm()let parentsRLM = realm.objects(RLM_Parent.self)parentRLM = parentsRLM[0] //假设是取第一个父表,方法很多自己选let listData:List = parentRLM.listData //假设父表的List关联栏位叫做listData,注1try! realm.write { listData.swap(index1: 0 , 1) //交换第1笔跟第2笔的资料(他的函式参数用法有点违反现行swift的规制就是了。他把第二个参数给隐式了)}
注1:当有跟资料表做关连时,该关连栏位底下所有的资料都会变成List型态存在,而非Results的型态。
也就是说,用这种方式处理时就不需要做List转型
其实这个东西所改变的并不是真正的资料库顺序。
他改成只是父表的list栏位所对应的子表资料的顺序。
也就是说如果想对全表做排序的话也许就必须让全表的资料都先对应到一个父资料表的栏位去才行。
不过大致上这样应该就足够应付很多资料排序的需求了。