プログラミングガール

Developing a better me

RealmのResults型をArrayに変換する

背景

「テーブルのセルを並び替えたい」と思った時、

let movedCard = cards[index]
cards.removeAtIndex(index)
cards.insert(movedCard, atIndex: destinationIndexPath.row)

といったように実装すればいいかな、と思ったのですが、
今回はデータの保存にRealmを使ってる影響でこの「cards」の値がResultsとなり、

  • removeAtIndex(index)
  • insert(movedCard, atIndex: destinationIndexPath.row)

が使えませんでした orz


Results型をArrayに変換したら幸せになれる

let array = Array(results)

こちらでResults型をArrayに変換できます。
こうなれば後はこっちのもの。

let realm = try! Realm()
let cards = Array(realm.objects(Card))
// 移動するcardを一時的に退避し、削除
let movedCard = cards[index]
cards.removeAtIndex(index)
// 移動先に先ほどの movedCardを差し込む
cards.insert(movedCard, atIndex: destinationIndexPath.row)