как я могу переупорядочить таблицу Realm, используя tableview в swift

Я хочу переупорядочить свой список Избранное в виде таблицы в быстром темпе, используя Realm в качестве источника данных. Следующий код работает, однако он создает список избранного дважды. Я изо всех сил пытаюсь удалить данные, чтобы иметь возможность перезагрузить Избранное в правильном порядке. Вот код:

//MARK:REORDER list
override func tableView(tableView: UITableView, var moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath) {

    let favouritesR = realm.objects(FavouritesRealm)

    //convert to array
    favouritesArray = []
    for min in favouritesR{
        favouritesArray.append(min)
    }

    try! realm.write {
        //move the row
        let movedObject = self.favouritesArray[sourceIndexPath.row]
        favouritesArray.removeAtIndex(sourceIndexPath.row)
        favouritesArray.insert(movedObject, atIndex: destinationIndexPath.row)

        //here I would like to clear the FavouritesRealm table of all data, so that with the below code I can just read the itmes back in the right order. However, deleting rows crashes the app. See my previous question http://stackoverflow.com/questions/38068826/why-does-clearing-contents-of-realm-table-invalidate-the-object/38095648#38095648

        //read the re-ordered list back into the FavouritesReam table
        for f in favouritesArray{
            let favouriteRealm = FavouritesRealm()
            favouriteRealm.name = f.name
            favouriteRealm.price = f.price
            favouriteRealm.dbSource = f.dbSource
            favouriteRealm.date = f.date
            favouriteRealm.favourite = f.favourite
            realm.add(favouriteRealm)
        }
    }
}
 Shripada30 июн. 2016 г., 05:48
Что ж, это не очень хорошая идея, чтобы удалить и повторно добавить элементы обратно в область db, просто чтобы поддерживать порядок. Все, что вам нужно, это отсортировать массив избранного и сохранить свойство sortOrder (просто целое число) в ваших объектах. Таким образом, всякий раз, когда вы хотите загрузить данные из Realm, получите массив, и сначала отсортируйте его согласно sortOrder и перезагрузите табличное представление. НТН

Ответы на вопрос(1)

Решение Вопроса

alm - это управлять другим объектом Realm какList имущество.

class FavouritesList {
   let favourites = List<FavouritesRealm>()
}

Таким образом, вы можете использовать функцииList Само свойство для управления упорядочением объектов, полностью в рамках Realm.

Если вы не хотите испытывать трудности с добавлением другого объекта, другой подход, который я использовал ранее при отправке приложений, состоит в простом добавлении свойства orderIndex, которое численно указывает порядок объектов, который затем можно отсортировать с помощью добавления..sorted("orderedIndex") в конце запросов. Но первый подход будет намного быстрее и проще в управлении, чем этот способ.

Ваш ответ на вопрос