LoginSignup
2
2

More than 5 years have passed since last update.

Himotokiで定義したModelをObjective-Cから使う

Posted at

SwiftとObjective-C混在のプロジェクトでも何とかしてHimotokiを使いたい!
SwiftでMantleを使うのはもう嫌だ!

そんな思いからこの記事は生まれました。

結論から言えば、NSObjectを継承したclassをDecodable Protocolに準拠させ、parse用のwrapperメソッドを実装することでObjective-Cからも使用することができます。

以下のコードはSwift 2.2、Himotoki 2.1.1の環境を想定しています。

Model(Swift)

@objc final class User: NSObject {
    let name: String

    init(name: String) {
        self.name = name
        super.init()
    }

    // Objective-Cから使うために作ったメソッド
    static func parse(JSON: AnyObject) -> User? {
        return try? decodeValue(JSON)
    }
}

extension User: Decodable {
    static func decode(e: Extractor) throws -> Self {
        return try self.init(name: e <| "name")
    }
}

呼び出し側(Objective-C)

user = [User parse:response];

このようにして、少しずつ呼び出し側もSwiftに置き換えていきましょう。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2