0

私のアプリケーションでは、オブジェクト マッピングに alamofire オブジェクト マッパーを使用しています。これが私のコードです

class OrderDetail: Mappable {

var Message : String!
var Status : Int!
var result:[OrderDetailData]?

required init?(_ map: Map) {

}

func mapping(map: Map) {
    Message <- map["Message"]
    Status <- map["Status"]
    result <- map["Result"]

}


}


class OrderDetailData: Mappable {


    var statusId: String?
    var tax: String?
    var total: String?
    var toTime: String?
    var updated: String?
    var userId: String?
    var orederDetail : [OrderDetailSecond]?


    required init?(_ map: Map){

    }

    func mapping(map: Map) {


        statusId <- map["status_id"]
        tax <- map["tax"]
        total <- map["total"]
        toTime <- map["totime"]
        updated <- map["updated"]
        userId <- map["user_id"]
        orederDetail <- map["F017A_order_detail"]

    }


}



class OrderDetailSecond: Mappable {

    var id : String?
    var isRxMedicine : Int?
    var medicineTypeId : String?
    var name : String?
    var orderId : String?
    var price : String?
    var quentity : String?
    var strength : String?

    required init?(_ map: Map){

    }

     func mapping(map: Map) {

        id <- map["id"]
        isRxMedicine <- map["is_rx_medicine"]
        medicineTypeId <- map["medicine_type_id"]
        name <- map["name"]
        orderId <- map["order_id"]
        price <- map["price"]
        quentity <- map["qty"]
        strength <- map["strengh"]
    }
}

これが私がマッピングを行う方法です。これは私のAPI呼び出しです

class DataControllerOrderDetail: UIViewController {

func get_order_detail(orderId : String,completion : (orderDetailObject : OrderDetail) -> Void) {

    let url = "\(OrderURL)full_order_data"
    let param : [String : AnyObject] = [
        "orderId" : orderId
    ]

    Alamofire.request(.GET, url, parameters: param, encoding: .URL).responseObject { (response:Response<OrderDetail, NSError>) in

        switch response.result{
        case .Success(let value) :
            var my_order_detail : OrderDetail?
            my_order_detail = value
            completion(orderDetailObject: my_order_detail!)
        case.Failure(let error) : break
        }


    }
}
}

orderDetailSecond クラス要素の値にアクセスするために、このコードを実行しています

override func viewDidLoad() {
    DataControllerObject.get_order_detail(order_id) { (orderDetailObject) in
        self.my_order_list = orderDetailObject
        if let orderdetail = self.my_order_list, orderDetailDataObject = orderdetail.result {

            let detailArray = orderDetailDataObject[0].orederDetail

            if  let orderdata = detailArray
            {
                print(orderdata.count)

            }

        }

    }

}

orderDetailSecondクラス要素の値にアクセスするたびに、これは必須 です。などに直接アクセスできるようにマップするにはどうすればよいですか。orderDetailSecond.elementname

4

1 に答える 1