*

RealmのListとArrayの相互変換によるマップ

公開日: : 最終更新日:2018/02/09 Tips , ,

 Realm+ObjectMapperを使って、RealmのオブジェクトをJSON変換してたのですが、Listの項目だけJSONにならない、という現象に直面していろいろ悩んだ(パッと解決するなら、Objectを継承したStringObjectクラスを使うと解決できますが、JSONがいかにも汚くなる)のですが、TrasfromTypeプロトコルを実装することで幾ばく化きれいにできそうなので、こんなコードを組んでみました。
 これでObjectMapperの書式に従い「hogehoge < - (map["hogehoge"], StringArrayTransform)」マッピングすることで、Realmオブジェクト内の値ListをJSON化できます。
なんかコードがよろしくないというか、とりあえず動作してるレベルでアレですが…。

import RealmSwift
import ObjectMapper

class StringArrayTransform: TransformType {
    // Realm List <-> Arrayの相互変換
    typealias Object = List<String>

    typealias JSON = Array<String>
    
    func transformFromJSON(_ value: Any?) -> Object? {
        let result = List<String>()
        if let tempArr = value as! Array<String>? {
            for entry in tempArr {
                result.append(entry)
            }
        }
        return result
    }
        
    func transformToJSON(_ value: List<String>?) -> Array<String>? {
        var results = [String]()
        if let value = value {
            for obj in value {
                results.append(obj)
            }
        }
        return results
    }
}

関連記事

iOS7の青色

iOS7の標準UIで使われている、水色に近い青の色についての記事です。 あの色には特に名前を決まっ

記事を読む

UITableViewのセクションヘッダをStoryboardで作る時の参考

UITableViewのセクションヘッダをカスタムして作る際に、セルと同様にプロトタイピングするため

記事を読む

Bitbucketの画面の日本語化/コミット時に同時プッシュを行う

前回の記事の続きで、Bitbucketの画面の日本語化と、Xcodeでコミットするときに同時にpus

記事を読む

UISplitViewControllerの仕切り線の色を設定

UISplitViewControllerで、iPadを横向き(Landscape)にしたときの2つ

記事を読む

plistファイルに色を入れる

plistファイル中にUIColorを入れたい!という場合。普通RGBAの値を数値で入れるとかするけ

記事を読む

Xcode8で余計なログを抑制する

Xcode8に更新してから、妙にログが増えたので、NSLogで明示したのと実行時エラー以外のログを吐

記事を読む

CoreDataのソートとsectionNameKeyPathの関係

CoreDataをフェッチするときに、indexPathのsectionにできるsectionNam

記事を読む

GoogleスプレッドシートからCSVにエクスポートしたデータを得る方法

情報がない中さんざ苦労しましたが、Googleスプレッドシート(の最初のシート)をCSVとしてエクス

記事を読む

iOS9でのNSFetchedResultsContollerDelegateの挙動

ハマったので短いながらメモしたいと思います。 NSFetchedResultsContollerD

記事を読む

実機テストしたときのデータを取り出す

Xcodeでコンパイルして実機テストしている場合に、テストデータを実機から取り出す方法です。 以下

記事を読む

Xcode10からのimage literal / color literalの指定方法

アセットにあるUIImageの直接指定が可能なImage litera

Xcode11でのバージョン番号の取得方法

Xcode11になってバージョン番号をスクリプトから得て自動で更新する

GoogleスプレッドシートからCSVにエクスポートしたデータを得る方法

情報がない中さんざ苦労しましたが、Googleスプレッドシート(の最初

画面回転をしたあとに、UITextViewの先頭を表示する

回転によりサイズが可変するUITextViewで、縦向き(ポートレイト

NXDrawKitを導入してみる

ACEDrawingViewがObj-Cで書かれていて、いまいちメンテ

→もっと見る

    PAGE TOP ↑