0

I have created Model for Json response add adding like below

and JSON ServiceCall like below: here i am getting JSON response and add values to label..

var orderDB = PlacedOrderDataModel(dictionary: NSDictionary()) 

override func viewDidLoad() {
super.viewDidLoad()

orderDB = PlacedOrderDataModel(dictionary: NSDictionary()) // previous
serviceCall()
}

func serviceCall(){
var header = ["Content-Type":"application/json",
             "X-localization": "\(langType)"]
let url = getUrl(of: .getOrderData)+orderId

APIReqeustManager.sharedInstance.getServiceCall(param: nil, vc: self, url: url, header: header) {(responseData) in

       self.orderDB = PlacedOrderDataModel(dictionary: responseData.dict as NSDictionary? ?? NSDictionary())
       let order = self.orderDB?.result?.order
       self.lblSubtotal.text = "$\(order?.subtotal ?? "")"
       self.lblTotalDiscnt.text = "$\(order?.total_discount ?? "")"
       self.totalPaybaleAmount.text = "$\(order?.order_total ?? "")"
       self.tableView.reloadData()
}
}

but i need to add JSON data in out of serviceCall.. means here right below.. all the values i am getting nil.. but the same values i am getting in serviceCall()

extension FinalPlaceOrderVC: SessionDataSource, SessionDelegate, SessionAppearance{


 var customer: Customer? {
    print("testing \(self.orderDB?.result?.order?.shipping_email ?? "")")

    var newCustomer: Customer? {
        let data = orderDB?.result?.order
        let emailAddress = try? EmailAddress(emailAddressString: data?.shipping_email ?? "")
        let phoneNumber = try? PhoneNumber(isdNumber: "956", phoneNumber: data?.shipping_phone ?? "")
        let names = "test tap"
        return try? Customer(emailAddress: emailAddress, phoneNumber: phoneNumber, firstName: data?.shipping_fname ?? "", middleName: nil, lastName: data?.shipping_lname ?? "")
    }
    return newCustomer
 }
 var amount: Decimal {
    let order = self.orderDB?.result?.order
    let amount = Decimal(string: order?.order_total) ?? 0
    
    return amount
}
}

how to add JSON data here.. please do help

  • Does this answer your question? [Returning data from async call in Swift function](https://stackoverflow.com/questions/25203556/returning-data-from-async-call-in-swift-function) – Joakim Danielson Jun 17 '21 at 08:07

1 Answers1

0

check it and let me know what you get.

var orderdb = serviceCall()

func serviceCall() -> PlacedOrderDataModel {
    var header = ["Content-Type":"application/json",
                  "X-localization": "\(langType)"]
    let url = getUrl(of: .getOrderData)+orderId
    
    APIReqeustManager.sharedInstance.getServiceCall(param: nil, vc: self, url: url, header: header) {(responseData) in
        if responseData.count > 0 {
            return PlacedOrderDataModel(dictionary: responseData.dict as NSDictionary? ?? NSDictionary())
        }else {
            return PlacedOrderDataModel(dictionary: NSDictionary())
        }
    }
}
jatin fl
  • 157
  • 6