我需要使用列表吗?如果答案是肯定的,我如何重构以下代码以便能够使用列表并使List与Realm容器保持同步.换句话说,在添加和删除时,我很难想出一个很好的方法来保持Realm容器和List具有相同的项目.
在以下代码中,在最后一个索引处输入新项目.如何重组它以便能够在0索引处插入项目?
模型类
import RealmSwiftclass Item:Object { dynamic var productname = ""}
主VIEwController
let realm = try! Realm()var items : Results<Item>?var item:Item?overrIDe func vIEwDIDLoad() { super.vIEwDIDLoad() self.items = realm.objects(Item.self)}func addNewItem(){ item = Item(value: ["productname": productnameFIEld.text!]) try! realm.write { realm.add(item!) }}func tableVIEw(tableVIEw: UItableVIEw,numberOfRowsInSection section: Int) -> Int { return self.items!.count}func tableVIEw(_ tableVIEw: UItableVIEw,cellForRowAt indexPath: IndexPath) -> UItableVIEwCell { let cell = tableVIEw.dequeueReusableCell(withIDentifIEr: "reusableCell",for: indexPath) let data = self.items![indexPath.row] cell.textLabel?.text = data.productname return cell}func tableVIEw(_ tableVIEw: UItableVIEw,commit editingStyle: UItableVIEwCellEditingStyle,forRowAt indexPath: IndexPath) { if editingStyle == UItableVIEwCellEditingStyle.delete{ if let item = items?[indexPath.row] { try! realm.write { realm.delete(item) } tableVIEw.deleteRows(at: [indexPath],with: UItableVIEwRowAnimation.automatic) } }}
理想情况下,这是我想在addNewItem()方法中插入新项目时能够做到的…
item = Item(value: ["productname": inputItem.text!]) try! realm.write { realm.insert(item!,at:0) }解决方法 添加一个sortedindex整数属性,允许您手动控制对象的排序,这绝对是在Realm中订购对象的更常用的方法之一,但它效率很低.为了将对象插入0,您需要遍历每个其他对象并将其排序数增加1,这意味着您最终需要触摸数据库中该类型的每个对象才能执行此 *** 作.
这种实现的最佳实践是创建另一个包含List属性的Object模型子类,在Realm中保留它的一个实例,然后将每个对象添加到该属性.列表属性的行为与普通数组类似,因此可以非常快速有效地按以下方式排列对象:
import RealmSwiftclass ItemList: Object { let items = List<Item>()}class Item: Object { dynamic var productname = ""}let realm = try! Realm()// Get the List objectlet itemList = realm.objects(ItemList.self).first!// Add a new item to itlet newItem = Item()newItem.productname = "Item name"try! realm.write { itemList.items.insert(newItem,at: 0)}
然后,您可以直接使用ItemList.items对象作为表视图的数据源.
总结以上是内存溢出为你收集整理的ios – 如何将0索引处的项目插入Realm容器全部内容,希望文章能够帮你解决ios – 如何将0索引处的项目插入Realm容器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)