なぜrealmデータベースのプロパティ値は変更されませんか?
上記のように、インデックスはシーケンスで1つ増加します。 3のようなインデックス(0を除く)の1つを削除すると、すべてのインデックスが0〜5の順番で表示されることを意味します。1 & 2は変更されず、4は3に減少、5> 5。以下の私のコードです:
let defaultRealm = try! Realm()
let currentRealm = self.defaultRealm.objects(CurrentRealmObject.self)
let remainedItems = currentRealm.filter("index > \(indexPath.row)")
for item in remainedItems {
var realmIndex = item.index
print("before \(realmIndex)")
try! self.defaultRealm.write {
realmIndex -= 1
print("update \(realmIndex)")
}
}
私はインデックス3を削除した後、レルムデータベースは、以下になる:
、コンソールに印刷している:
before 6
update 5
before 4
update 3
before 5
update 4
を参照してください?値は実際には更新されますが、領域データベースは変更されずにそのままの状態に保たれ、そのシーケンスは混乱します(なぜ同じ理由でそれらを同じ順序に保つか?
ありがとうございました!
ありがとうございます!最初の問題が解決しました。あなたはオブジェクトのシーケンスを修正する方法を知っていますか?上のように、0,1,2,3,4,5,6、インデックス3を削除すると、シーケンスは0,1,2,4,5,6になりますが、0,1,2,6にはなりません、4,5、私はインデックスをpageControllerのページとして参照する必要があります、シーケンスの奇妙な変更は、ページを混乱させるでしょう。 – stephen
@steve シーケンスの場合、他のデータベースと同じように、レルムは順序を保持しません。結果を順番に取得したい場合は、 'sorted()'メソッドを使って明示的にソートする必要があります。または、Realmの 'List'を代わりに使用してください。 'List 'は注文を維持します。私は自分の答えを編集しました。 –