Swift 斯威夫特王国。我们如何重新排序结果项

Swift 斯威夫特王国。我们如何重新排序结果项,swift,realm,Swift,Realm,假设我有一个这样的物体 @objcMembers class MyClass: Object { dynamic var id: Int = 0 dynamic var title: String = "" } let realm = try! Realm() let myClass = realm.objects(MyClass.self) 我已经在MyClass中插入了项,并像这样获取 @objcMembers class MyClass: Objec

假设我有一个这样的物体

@objcMembers class MyClass: Object {
    dynamic var id: Int = 0
    dynamic var title: String = ""
}
let realm = try! Realm()
let myClass = realm.objects(MyClass.self)
我已经在MyClass中插入了项,并像这样获取

@objcMembers class MyClass: Object {
    dynamic var id: Int = 0
    dynamic var title: String = ""
}
let realm = try! Realm()
let myClass = realm.objects(MyClass.self)

如何对myClass中的项目重新排序。或者,如果MyClass中有10行,如何更改行顺序、交换、移动或交换。

这个答案最重要的部分是:

领域结果对象没有保证的顺序。这意味着,如果加载10个对象10次,它们可能有10个不同的顺序。

您需要向对象添加用于排序的属性

@objcMembers class MyClass: Object {
    dynamic var _id: Int = 0
    dynamic var title: String = ""
    dynamic var score = 0 //used for ordering
}
然后按分数顺序加载结果(本例中分数越低越好)

支持您有三个MyClass对象,其名称属性为Frank,分数为3,Henry为10,Bruce为20

你运行上面的程序来得到这些人,他们将按分数排序

Frank (score = 3)
Henry (score = 10)
Bruce (score = 20)
假设布鲁斯再次上场并得了7分。更新领域中Bruce的分数,结果将以排名第二的Bruce对象更新

Frank (score = 3)
Bruce (score = 7)
Henry (score = 10)

因此,如果要更改排序,请更新排序依据的任何属性,结果将反映新的顺序。

为清楚起见,请使用
results。objects
不返回对象类。因此,在这个
中,让myClass=realm.objects(myClass.self)
命名不准确。它返回一个Results对象,因此这更准确
让realmResults=realm.objects(MyClass.self)
查看API了解更多信息。谢谢@Jay。订购解决了我的问题。很有帮助