2016-07-22 14 views
0

Ich verwende , um JSON-Antworten vom Server zu serialisieren. Derzeit mit einer Get-Methode habe ich folgende strukturierte JSON Antwort:AlamofireObjectMapper, geschachtelte JSON-Struktur ist immer Null, wenn serialisiert

{ 
    data : { 
     [ 
     { ID: 4, 
      ... 
      PointList : { 
      [ 
       { 

       }, 
       {} 
      ] 
      } 

     }, 
     { 
      ... 
     } 

     ] 
    } 
} 

Das äußerste Objekt i als benutzerdefiniertes bin definieren classBrowsableObjectList genannt, wo ich die Zuordnung definiere die json in das Objekt deserialisieren als

class BrowsableObjectList : Mappable { 
    var data : [BrowsableObject]? 

    required init?(_ map: Map){ 
    } 

    func mapping(map: Map) { 
    data <- map["data"] 
    } 
} 

Ähnlich definieren I BrowsableObject als

class BrowsableChronicle : Mappable { 
    var pointList : [Point]? 

    required init?(_ map: Map){} 

    func mapping(map: Map) { 
    pointList <- map["PointList"] 
    } 
} 

ist, die auf eine Liste vonverweistDabei ist Point eine benutzerdefinierte Klasse, die als ein anderes abbildbares Objekt definiert ist.

class Point{ 
    var axisX : Int? 
    var axisY : Int? 

    required init?(_ map: Map){ 

    } 

    func mapping(map: Map) { 
    axisX <- map["AxisX"] 
    axisY <- map["AxisY"] 
    } 
} 

Das Problem ist in meinem Server Aufruf an den Endpunkt, die ich in meinem Browser überprüfen als Werte für PointList mit definiert, ist immer nil, wenn ich auf sie zugreifen.

Hier ist, wo ich den Endpunkt nennen:

func getChronicleEntries(pageIndex: Int, pageSize : Int, completionHandler: ([BrowsableChronicle]?, NSError?) ->()){ 
print("page index is : \(pageIndex)") 
Alamofire.request(.GET, "http://myendpoint.com/getThing?", parameters: ["pageindex": "\(pageIndex)", "pagesize": "\(pageSize)"]).responseObject { (response: Response<BrowsableObjectList, NSError>) in 
    if let userResponse = response.result.value { 
     if let data = userResponse.data { 
     let browsableObjectArray : [BrowsableObject] = data 
     completionHandler(browsableObjectArray, nil) 
     } 
    } else { 
     Logger.logSomething(response.result.error!.localizedDescription) 
     completionHandler(nil, response.result.error) 
    } 
} 
} 

Das Problem ist, dass BrowsableObject.pointList ist immer nil obwohl der Endpunkt die richtige JSON Liste der Point s zurückgibt. Was soll ich machen?

Antwort

0

Ich habe die innerste Klasse nicht als Mappable festgelegt.

class Point: Mappable{ 

} 

duh!