Help us understand the problem. What is going on with this article?

[Swift] Alamofire + Unbox + Realm が無かったので作ってみました。

More than 3 years have passed since last update.

作ろうと思った背景

私はいつもAPIなどで取得したJSONを変換するときに Unbox にお世話になっています。
毎回毎回トランスファーなど作らなくても良いようにしたかったのでとりあえず作ってみました。

いつも利用しているライブラリ

Networking : Alamofire
Decoder : Unbox
Database : Realm

インスパイアー

UnboxedAlamofire
AlamofireからUnboxに変換を楽にするのはすでに作ってくれている人がいた!!

今回作ったライブラリ

CustomUnboxedAlamofire

名前の通り、Realm だけのためではなく、Unbox からCustomObjectに変換できるようになっています。
どんな値にも受け渡せるのでちょっと便利かも?

サンプルコード

Model

class Candy: Object, CustomUnboxed {

    dynamic var name: String = ""
    dynamic var sweetnessLevel: Int = 0

    static func custom(unboxer: Unboxer) throws -> CustomUnboxed {
        let candy: Candy = Candy()
        candy.name = try unboxer.unbox(key: "name")
        candy.sweetnessLevel = try unboxer.unbox(key: "sweetness_level")
        return candy
    }
}

Logic

let url = "https://raw.githubusercontent.com/serejahh/UnboxedAlamofire/890674cdfdcf2424f2c45ff5f4af455ccfaf7617/UnboxedAlamofireTests/fixtures/test_object.json"

Alamofire.request(url).responseObject { (response: DataResponse<Candy>) in
    if let candy: Candy = response.result.value {
        debugPrint(candy)
    }
}

それっぽく動いているみたいですが、もし何かあれば CustomUnboxedAlamofire こちらでご報告ください。
対応できそうでしたら対応します。

気にしちゃいけないこと

Realm Docs Json
Json to Realm ができるみたいなのですが。。。
個人的には今回の方が Realm だけではなく他のものにも変換できるので好きかもですw

shun_nakahara
現在フリーランスとしてお仕事もらいつつ、会社の立ち上げを行っています。 よろしくお願いいたします。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away