Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.73 KB | None | 0 0
  1. class Root: Mappable {
  2.    
  3.     var childs = [MyClass]()
  4.    
  5.     required convenience init?(map: Map) {
  6.         self.init()
  7.     }
  8.    
  9.     func mapping(map: Map) {
  10.         childs <- (map["childs"], ArrayTranform<MyClass>())
  11.     }
  12. }
  13.  
  14. class MyClass: Mappable {
  15.     var ident: String?
  16.     var code: String?
  17.     var name: String?
  18.     var child: [MyClass] = []
  19.    
  20.     required convenience init?(map: Map) {
  21.         self.init()
  22.     }
  23.    
  24.     func mapping(map: Map) {
  25.         ident <- map["ident"]
  26.         code <- map["code"]
  27.         name <- map["name"]
  28.         child <- (map["childs"], MyClassTransform<MyClass>())
  29.     }
  30. }
  31.  
  32. class ArrayTranform<T: Mappable>: TransformType {
  33.     func transformToJSON(_ value: Object?) -> JSON? {
  34.         return value?.flatMap { $0.toJSON() }
  35.     }
  36.    
  37.     func transformFromJSON(_ value: Any?) -> [T]? {
  38.         if let childs = Mapper<T>().mapArray(JSONObject: value) {
  39.             return childs
  40.         }
  41.         return []
  42.     }
  43.    
  44.     typealias Object = [T]
  45.    
  46.     typealias JSON = Array<Any>
  47. }
  48.  
  49. class MyClassTransform<T: MyClass>: TransformType {
  50.    
  51.     func transformToJSON(_ value: Object?) -> JSON? {
  52.         return value?.flatMap { $0.toJSON() }
  53.     }
  54.    
  55.     func transformFromJSON(_ value: Any?) -> [T]? {
  56.         var array = [T]()
  57.         if let dictionary = value as? [String: Any] {
  58.             for childID in dictionary.keys {
  59.                 if let child = Mapper<T>().map(JSONObject: dictionary[childID]) {
  60.                     child.ident = childID
  61.                     array.append(child)
  62.                 }
  63.                
  64.             }
  65.         }
  66.         return array
  67.     }
  68.    
  69.     typealias Object = [T]
  70.    
  71.     typealias JSON = Array<Any>
  72.    
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement