Objectmapper: عامل ثنائي ')

تم إنشاؤها على ٨ مارس ٢٠١٧  ·  3تعليقات  ·  مصدر: tristanhimmelman/ObjectMapper

مرحبا،
أحاول تعيين 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 بشكل صحيح لتحويل العدد الصحيح الخاص بي إلى سلسلة؟

شكرا

التعليق الأكثر فائدة

@ 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
    }
  }
)

ال 3 كومينتر

+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. لذلك لا أحتاج إلى تغيير النوع في الفصل.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

delbyze picture delbyze  ·  3تعليقات

maksTheAwesome picture maksTheAwesome  ·  4تعليقات

zhengying picture zhengying  ·  4تعليقات

quetool picture quetool  ·  3تعليقات

pcompassion picture pcompassion  ·  3تعليقات