2016-10-18 15 views
0

私はメモを取るためにRealmを使用しています。 以前にコアデータを使用していましたが、コアデータをレルムに移行していますが、問題が発生しました。このようなオブジェクトを並べ替えると、エラーが発生します。Realm SwiftでUITableViewセルをどのように並べ替えるのですか?

do { 
let realm = try Realm() 
let source = myNote[sour!.row]   
try realm.write() { 
myNote.remove(objectAtIndex: sourceIndexPath!.row) 
myNote.insert(source, at: destensionIndexPath!.row) 
} 
} 
catch { 
print("handle error") 
} 

だから、私は、オブジェクトに

dynamic var orderPosition: Int = 0 

orderPositionプロパティを追加し、この ReorderingRealmResultsInTableView.swift

のtableView moveRowAtIndexPathを変更したが、それはたくさん助けていませんでした。 どうすればオブジェクトをの領域に並べ替えることができますか?

答えて

4

orderPositionプロパティに基づいてソートするのではなく、注文アイテムをListに保存することをおすすめします。

"古いインデックス"と "新しいインデックス"の間のすべてのオブジェクトが変更を考慮して変更される必要があるため、アイテムを移動するとき、手動でインデックスを格納するパフォーマンスが大幅に低下します。

List.move(from:to:)を使用してオブジェクトをあるインデックスから別のインデックスに移動することができます。これは、並べ替えるテーブルビューのインデックスに直接対応する必要があります。ここで

を使用すると、タスクを並べ替えるためのサポートを含む、タスク管理アプリを構築してガイドにあなたに従うことができますチュートリアルです:私はそれを通じ同期する方法をわからなかったのにhttps://realm.io/docs/realm-mobile-platform/example-app/cocoa/

0

Listは、確かに効率的かつクリーンでありますサーバー。したがって、私の場合はorderPosition: Doubleを使用しています。その値は、オブジェクトが挿入されている2つの既存のorderPositionの中間として計算されます。また、通知からtableViewを更新せずに書き込みを実行できることにも留意してください:try! list.realm?.commitWrite(withoutNotifying: [notificationToken!])

関連する問題