最初からHimotokiの想定でAPIKitをベースにクライアントを作ったけど、結局Realmを使いたくてObjectMapperにしておけばよかった!となった私です。
結局共存の必要はなく。Himotokiだけでなんとかした。
最初はRequestTypeで
extension RJAuthRequestType where Response: Decodable {
func responseFromObject(object: AnyObject, URLResponse: NSHTTPURLResponse) throws -> Response {
return try decodeValue(object)
}
}
extension RJAuthRequestType where Response: Mappable{
func responseFromObject(object: AnyObject, URLResponse: NSHTTPURLResponse) -> Self.Response? {
guard let dictionary = object as? [String: AnyObject] else {
return nil
}
let mapper = Mapper<Response>()
guard let object = mapper.map(dictionary) else {
return nil
}
return object
}
}
こんな感じで書いておけばResponseがMappableだろうとDecodableだろうといけると思っていたけどずっと does not conform to protocol って怒られていて、結局himotoki一本にした。
ただ保存するModelの形式をstructのままではRMLObjectは使えないので、
final class TeacherModel:RLMObject{
...
}
extension TeacherModel:Decodable{
static func decode(e: Extractor) throws -> TeacherModel {
var teacher = TeacherModel()
teacher.tutorId = try e <| "tutor_id"
return teacher
}
}
こんな感じにしてみた。これでビルドもパースも無事できた、でもちょっとHimotokiの恩恵が・・・