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)