Можно ли использовать Any? в нашем классе модели, когда мы не уверены, какой тип данных получит наша модель - PullRequest
0 голосов
/ 06 октября 2019

У меня ошибка при сопоставлении моих данных json с моделью, поэтому я решил оставить переменные класса модели равными Any ?. Но я не уверен, правильно ли программно хранить все или некоторые значения модели в любом типе данных.

1 Ответ

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

То, что вам, вероятно, придется делать, - это при преобразовании из типов JSON в базовые типы иметь значения типа Any. Например:

guard let jsonObject = try? JSONSerialization.jsonObject(with: data, options: []) as! [String:Any] else {
    return
}

Затем вам нужно будет протестировать тип полученного значения и соответствующим образом обработать каждую ситуацию:

guard let jsonObject = try? JSONSerialization.jsonObject(with: data, options: []) as! [String:Any] else {
    return
}

switch jsonObject["key"] {
case let int as Int:

    //Handle Int scenario

case let string as String:

    //Handle String scenario

case let bool as Bool:

    //Handle Bool scenario

case let array as Array:

    //Handle array scenario

case nil:

    //Handle null scenario

default:

    //Other type?

}

После этого вы можете иметь свойство типа Any в вашей модели, которая будет приведена к определенному типу позже. Точно так же вы можете иметь несколько необязательных свойств для каждого типа. Например, ваша модель может иметь следующие свойства:

class MyModel {
    var int: Int?
    var string: String?
    var bool: Bool?
    var array: Array?
}

И тогда для каждого экземпляра этой модели будет установлено только одно из этих четырех необязательных свойств. Затем вы, конечно, будете проверять и обрабатывать каждый сценарий.

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