2016-11-20 2 views
0

При реализации функции удаления от удаляемого объекта у меня возникает следующая проблема: Когда я удаляю элемент, последний элемент из массива занимает его место.Несоответствие между таблицейView и базой данных

Так, например, у меня есть массив [1,2,3,4,5]. После удаления 2 (индекс 1) массив в базе данных выглядит так [1,5,3,4]. Но в представлении таблицы отображаются все правильные [1,3,4,5]. Почему это так? Я хочу, чтобы элементы Realm были сохранены таким образом [1,3,4,5].

Ниже, если реализация функции:

override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { 
     if editingStyle == .Delete { 
      try! realm.write { 
       let itemToDelete = items[indexPath.row] 

       realm.delete(itemToDelete) 

      } 
      tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Top) 
     } 
    } 

Я очень ценю вашу помощь!

+0

Если элементы в представлении таблицы отображаются правильно («1, 3, 4, 5»), откуда вы знаете, что они неправильно хранятся в Царстве? Я пытался воспроизвести ваше поведение, но не могу. Если бы вы могли добавить еще один код к своему вопросу, в том числе о том, как настроены ваши модели Realm и как ваш вид таблицы использует эти модели, это было бы здорово. Благодаря! – AustinZ

+0

@AustinZ Я использую браузер Realm, чтобы посмотреть, как ведет себя база данных. Благодаря ответам ниже я вижу, что такое моя сортировка. – Robert

ответ

2

Поскольку вы используете realm.delete, а не myList.remove, я предполагаю, что itemToDelete является автономным объектом, а не экземпляром в списке областей. Последовательность элементов в списке областей гарантируется, но не для поиска объектов. Поэтому, если вы просто используете realm.objects, последовательность не может быть гарантирована, если вы не примените собственный фильтр.

Я предполагаю, что вы используете браузер Realm и ожидаете соответствия последовательности, которой она не будет.

+0

Спасибо! Я понял, что мне нужно использовать List или отсортировать результаты. – Robert

3

Пожалуйста, обратите внимание, что Results не гарантирует сохранение порядка вставки. По соображениям производительности элементы могут быть переупорядочены, чтобы сохранить файл Realm маленьким или быстро выполнять операции.

List Недвижимость гарантирует, что они сохранят свой порядок вставки.

Если Вы хотите, чтобы отсортировать объявления о Вас, сообщите нам об этом Results.

Это описано в документах Королевства по адресу sorting.

+0

Спасибо! Теперь я вижу разницу между результатами и списком и почему у меня была эта проблема сортировки. – Robert

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