Невозможно правильно использовать значение Bool из ответа Api Swift 5 - PullRequest
0 голосов
/ 25 сентября 2019

Ниже приведено значение из ответа Api в форме Json:

isFavorite = true;

Это способ получить его в классе модели:

объявление:

var isFavorite:Bool = false
init(json:NSDictionary?)
{
    if json != nil
    {
       self.isFavorite = ((json?.object(forKey: "isFavorite")) != nil)
    }
}

таким образом, всегда получая "истину"

Ранее пробовал этот способ:

self.isFavorite = (json?.object(forKey: "isFavorite") as? Bool ?? false)

таким образом, всегда получаю "ложь"

Я не понимаю, что не так, яя делаю в разборе этого Bool

Обновление: Api response

isFavorite = true;

1 Ответ

1 голос
/ 25 сентября 2019

Все типы JSON в Swift являются типами значений.Так что ссылочный тип NSDictionary не рекомендуется (в любом случае).

Родной способ Swift -

let isFavorite : Bool

init(json: [String:Any]) {
    self.isFavorite = json["isFavorite"] as? Bool ?? false
}

Но из заданного (NSDictionary) вывода isFavorite = true; значение, по-видимому, String.В этом случае вы должны написать

let isFavorite : Bool

init(json: [String:Any]) {
    if let favorite = json["isFavorite"] as? String, favorite == "true" {
         self.isFavorite = true
      } else {
         self.isFavorite = false
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...