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に置き換えていきましょう。