SwiftyJSON, не могу превратить JSON в двойной - PullRequest
0 голосов
/ 05 мая 2018

Я пытаюсь создать приложение для криптовалюты, которое сообщит вам цену Cardano через API. В 'If Statement' ниже он идет прямо к 'else', но если я изменю '.double' на '.string', он работает нормально. Я не могу понять, почему. Я использую SwiftyJSON, Alamofire, Swift4 и Xcode 9

Вот API: https://api.cryptonator.com/api/ticker/ada-aud и это должно вернуть цену, например, 0,47756685

func updateCardanoData(json : JSON) {
    if let cardanoResult = json["ticker","price"].double {
        cardanoPriceLabel.text = currencySelected + "\(cardanoResult)"
    } else  {
        cardanoPriceLabel.text = "price unavailable"
    }
}

Спасибо.

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Это потому, что ваш API на самом деле не возвращает double, а строку.

"price":"0.48121602" - this is a string, notice the double quotes

Решением было бы привести полученную строку к Double, как это:

if let cardanoResult = json["ticker","price"].string, let doubleResult = Double(cardanoResult) {
        //do stuff with doubleResult
}
0 голосов
/ 05 мая 2018

Поскольку я не знаю структуру JSON, я могу только сказать, как напечатать ошибку. Я не знаю, поможет ли это вам. В качестве документа о состоянии SwiftyJSON вы можете использовать error, чтобы получить ошибку, например:

if let cardanoResult = json["ticker","price"].double {
    //do something with the Double value
} else  {
    print(json["ticker","price"].error)
}

Надеюсь, это поможет вам, в противном случае, пожалуйста, покажите нам структуру JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...