2017-03-08 10 views
0

사용자 정의 ObjectMapper 클래스가 있습니다. 데이터를 기반으로 요소를 다른 객체 유형에 매핑하려고합니다. 다음과 같은 논리를 구현했습니다. 하지만 그것은 나에게 값만주고, 단지 null 만 제공합니다.ObjectMapper 전체 요소 조건부 매핑

class FeedObject : Object, Mappable { 

    dynamic var post : HomeDataModel? 
    dynamic var friends : Friends? 

    required convenience init?(map: Map) { 
     self.init() 
    } 

    func mapping(map: Map) { 
     var Mtype = "" 
     Mtype <- map["type"] 
     print("TYPEEEEEE", Mtype) 

     if Mtype == "FRIENDS" { 
      friends <- map 
     } 
     else { 
      post <- map 
     } 
    } 
} 

어떻게 이런 종류의 매핑을 구현할 수 있습니까?

샘플 JSON -

{ "feed_objects": [ { "type": "NORMAL", "status": "none", "invited": false, "comment": "hello", "time": "00:12" }, { "type": "NORMAL", "status": "none", "invited": true, "comment": "How are you?", "time": "04:15" }, { "type": "FRIENDS", "display_text": "Your friends are here.", "count": 23 }, { "type": "NORMAL", "status": "verified", "invited": true, "comment": "great", "time": "09:32" }] }

+0

JSON 응답을 공유 할 수 있습니까? –

+0

@anilkukdeja 샘플을 추가했습니다. –

+0

제 대답을 확인하십시오. –

답변

0

난 당신이 전체 배열 객체를 저장한다고 생각합니다.

여기에서는 응답을받는 웹 서비스 구문 분석 메소드로 이동합니다.

if let responseValue = response.result.value as? [String:AnyObject]{ 
    if let feedObject = Mapper<Feed>().mapArray(JSONArray:data){ 
      print(feedObject) 
    } 
} 

피드 클래스 정의는 다음과 같습니다.

import ObjectMapper 

class Feed: Mappable, CustomStringConvertible { 

    required init?(map: Map) {} 

    func mapping(map: Map) { 
     type <- map["type"] 
     status <- map["status"] 
     comment <- map["comment"] 
     time <- map["time"] 
     invited <- map["invited"] 
    } 

    var description: String { 
     get { 
      return Mapper().toJSONString(self, prettyPrint: false)! 
     } 
    } 

    var type:String = String() 
    var status:String = String() 
    var comment:String = String() 
    var time:String = String() 
    var invited : Bool = Bool() 

} 

그런 다음 배열 객체를 반복하고 유형을 비교할 수 있습니다. 추가 도움이 필요하면 알려주세요.

+0

나는 또한 이것을 위해 seprate 데모를 준비했다. 데모가 필요한 경우 알려주십시오. –