مرحبا،
أحاول تعيين json إلى كائن ، وهناك قيمة (عدد صحيح) دائمًا لا شيء.
هذه عينة 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
على أنه TransformOf<Object, JSON>
وهو ما يعادل String
و Int
.
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
على أنهTransformOf<Object, JSON>
وهو ما يعادلString
وInt
.