2016-10-18 2 views
0

Я использую Realm для моего приложения для заметок. Раньше я использовал основные данные, и теперь я переношу данные ядра в область, но у меня проблемы! переупорядочение таких объектов вызывает ошибку.Как переупорядочить ячейки UITableView в Realm Swift?

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") 
} 

Поэтому я добавил orderPosition свойство моего объекта

dynamic var orderPosition: Int = 0 

и изменил Tableview moveRowAtIndexPath к этому ReorderingRealmResultsInTableView.swift

, но это не помогло. so Как я могу изменить порядок объектов в царстве?

ответ

4

Я бы рекомендовал вам хранить заказываемые предметы в List, а не сортировать на основе orderPosition.

Сохранение индекса вручную будет намного менее эффективным при перемещении элемента, потому что все объекты между «старым индексом» и «новым индексом» должны быть изменены для учета изменений.

Затем вы можете использовать List.move(from:to:) для перемещения объекта из одного индекса в другой, который должен соответствовать индексам в представлении таблицы, которое вы переупорядочиваете.

Вот учебник вы можете следить за проведешь вас через создание приложения для управления задачами, включая поддержку переупорядочение задач: https://realm.io/docs/realm-mobile-platform/example-app/cocoa/

0

List, безусловно, эффективный и чистый, хотя я не был уверен, как бы я синхронизировать его с помощью сервер. Поэтому в моем случае я использую orderPosition: Double, а значение вычисляется как среднее из двух существующих orderPosition s, с которым объект вставлен между ними. Также имейте в виду, что вы можете выполнить запись без обновления таблицыView из уведомления: try! list.realm?.commitWrite(withoutNotifying: [notificationToken!]).

Смежные вопросы