こんにちは、
jsonをオブジェクトにマップしようとしていますが、常にnilの値(整数)があります。
これは私のjsonサンプルです:
{"username":"user1","age":3}
そしてこれは私のコードです:
class T1: Mappable {
var username: String?
var age: String?
required init?(map: Map) {
}
// Mappable
func mapping(map: Map) {
let transform = TransformOf<Int, String>(fromJSON: { (value: String?) -> Int? in
// transform value from String? to Int?
return Int(value!)
}, toJSON: { (value: Int?) -> String? in
// transform value from Int? to String?
if let value = value {
return String(value)
}
return nil
})
username <- map["username"]
age <- (map["age"], transform)
}
}
jsonは「」を使用せずに「age」を返すので、transformOF関数を使用して文字列に変換しようとしているので、文字列型の「age」変数に格納できます(「age」の型は変更できません) Intに、次のようにレルムサポートを追加するので、その変数を文字列にする必要があります)。
とにかく、変換関数を適用しようとするとこのエラーが発生したため、プロジェクトをコンパイルできません。
二項演算子 '<-'は、タイプ 'String'および '(Map、TransformOf
) '
TransformOfを正しく使用して整数を文字列に変換するにはどうすればよいですか?
ありがとう
+1
@ adasoft-dev、あなたは反対の方法でやっています。 TransformOf
は、 String
およびInt
対応するTransformOf<Object, JSON>
として定義されます。
let transform = TransformOf<String, Int>(
fromJSON: { (value: Int?) -> String? in
if let value = value {
return String(value)
} else {
return nil
}
},
toJSON: { (value: String?) -> Int? in
if let value = value {
return Int(value)
} else {
return nil
}
}
)
私も同じ問題を抱えてる。 サーバーは常に値がint型または文字列型であることを返します。値が変更されることもあるので、クラスで定義された型があれば、json文字列の値型を変換できます。 したがって、クラスのタイプを変更する必要はありません。
最も参考になるコメント
@ adasoft-dev、あなたは反対の方法でやっています。
TransformOf
は、String
およびInt
対応するTransformOf<Object, JSON>
として定義されます。