Получить данные из массива в ответ в Swift - PullRequest
0 голосов
/ 01 октября 2019

Я использую API, и ответ отображается так:

 "responseBody": {
    "data": [
        "{\"AED_USD\":0.272255,\"USD_AED\":3.67305}"
    ]
}

Я запутался в том, как я могу извлечь значения AED_USD и USD_AED из этих данных массива. Я попытался взять все ответы в массиве и попытаться получить значение из базы индекса, но не работает. Как я могу получить значение? Мой код такой,

 let params = ["sourceCurrency":self.accountFromTxt.text!,
                  "targetCurrency":self.accountToTxt.text!] as [String : AnyObject]

    print(params)

    APIService.ExchangePrice(showActivityIndicator: true, parameters: params) { (responseObject) in
        if (responseObject?.status)!
        {
            self.print(responseObject?.data)

            self.exchangeRateArray.removeAll()

            if let usersDataArray = responseObject?.data as? [[String : Any]] {
                for userData in usersDataArray {
                    self.exchangeRateArray.append(ExchangeRateCurrency(JSON:userData)!)
                }

                if usersDataArray.count == 0
                {
                    //Empty Message
                    self.view.showEmptyScreenMessage(text: EmptyScreenMessages.transactionDetailMessage)
                }

                self.print(self.exchangeRateArray.count,self.exchangeRateArray[0])
            }
        }
        else
        {
            Utilities.showBar(text: responseObject?.errorObject?.message)
        }
    }

1 Ответ

0 голосов
/ 01 октября 2019

Ваши данные в строковой форме, измените строку на JSON NSdictonary. попробуй конвертировать вот так

let str = "{\"AED_USD\":0.272257,\"USD_AED\":3.673001}"
        if let data = str.data(using: String.Encoding.utf8) {
            do {
                let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String:Any]
                print(json)
            } catch {
                print("Something went wrong")
            }
        }

// В твой код.

 let params = ["sourceCurrency":self.accountFromTxt.text!,
                      "targetCurrency":self.accountToTxt.text!] as [String : AnyObject]

        print(params)

        APIService.ExchangePrice(showActivityIndicator: true, parameters: params) { (responseObject) in
            if (responseObject?.status)!
            {
                self.print(responseObject?.data)

                self.exchangeRateArray.removeAll()

                if let usersDataArray = responseObject?.data as? [[String : Any]] {
                    for userData in usersDataArray {
                     print(userData)
 // if you get string from userData
            if let data = userData.data(using: String.Encoding.utf8) {
                do {
                    let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String:Any]
                    print(json)
                } catch {
                    print("Something went wrong")
                }
            }
                    }

                    if usersDataArray.count == 0
                    {
                        //Empty Message
                        self.view.showEmptyScreenMessage(text: EmptyScreenMessages.transactionDetailMessage)
                    }

                    //self.print(self.exchangeRateArray.count,self.exchangeRateArray[0])
                }
            }
            else
            {
                Utilities.showBar(text: responseObject?.errorObject?.message)
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...