Objectmapper: bagaimana cara memetakan [Int64]?

Dibuat pada 11 Agu 2016  ·  4Komentar  ·  Sumber: tristanhimmelman/ObjectMapper

kode tidak berfungsi, cara menangani [Int64] atau Transform

 public struct TestObject Mappable {
        var check_time : [Int64]?    // not working
        public init?(_ map: Map) {
        }
        mutating public func mapping(map: Map) {
            check_time    <- map["check_time"] // not working
        }
  }

Komentar yang paling membantu

Memperluas jawaban oleh @josejuanqm , berikut adalah kelas yang dapat digunakan kembali jika instance kelas global bukan milik Anda:

import ObjectMapper

public class Int64Transform: TransformType {
    public typealias Object = Int64
    public typealias JSON = Int

    public func transformFromJSON(value: AnyObject?) -> Int64? {
        guard let value = value as? Int else {
            return nil
        }
        return Int64(value)
    }

    public func transformToJSON(value: Int64?) -> Int? {
        if let data = value {
            return Int(data)
        }
        return nil
    }
}

Semua 4 komentar

Anda dapat menggunakan transformasi ini ->

public let transformInt64 = TransformOf<Int64, Int>(fromJSON: { (value: Int?) -> Int64? in
    guard let v = value else{
        return nil
    }
    return Int64(v)
    }, toJSON: { (value: Int64?) -> Int? in
        // transform value from Int? to String?
        if let value = value {
            return Int(value)
        }
        return nil
})

dan memodifikasinya untuk diubah menjadi array.

lalu gunakan seperti ini ->

someVariable <- (map["someIntArray"], transformInt64)

Semoga membantu!

Terima kasih banyak!!

Memperluas jawaban oleh @josejuanqm , berikut adalah kelas yang dapat digunakan kembali jika instance kelas global bukan milik Anda:

import ObjectMapper

public class Int64Transform: TransformType {
    public typealias Object = Int64
    public typealias JSON = Int

    public func transformFromJSON(value: AnyObject?) -> Int64? {
        guard let value = value as? Int else {
            return nil
        }
        return Int64(value)
    }

    public func transformToJSON(value: Int64?) -> Int? {
        if let data = value {
            return Int(data)
        }
        return nil
    }
}

Bidang int64 mendapat nilai nihil di ObjectMapper 2.2.5 dengan solusi di atas. Saya menguraikan nilai Int64 langsung dari objek String.

impor Yayasan
impor ObjectMapper

kelas Int64Transformer : TransformType {
typealias publik Obyek = Int64
typealias publik JSON = String

public func transformFromJSON(_ value: Any?) -> Int64? {
    guard let value = value as? String else {
        return nil
    }
    return Int64(value)
}

public func transformToJSON(_ value: Int64?) -> String? {
    if let data = value {
        return String(data)
    }
    return nil
}

}

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

jperera84 picture jperera84  ·  4Komentar

quetool picture quetool  ·  3Komentar

delbyze picture delbyze  ·  3Komentar

Dbigshooter picture Dbigshooter  ·  4Komentar

maksTheAwesome picture maksTheAwesome  ·  4Komentar