Я преобразовал в Swift 3 и получил следующие ошибки при назначении AnyObject JSONSerialization.jsonObject. Кто-нибудь сталкивался с этой проблемой и знал об исправлении?JSONSerialization AnyObject Вопросы преобразования SWIFT3
-4
A
ответ
0
Поскольку последнее обновление Swift 3 большинство типов возврата изменяется от AnyObject
к Any
и опущенными не допускается, поэтому в такой ситуации вы вынуждены использовать явное приведение. Это означает, что вы должны сделать пару операторов guard
или использовать необязательную цепочку if let
, определяющую каждое необходимое поле. Рассмотрите возможность использования map
, filter
, reduce
, если это возможно, чтобы сделать ваш код более элегантным. Пример:
guard
путь:
guard let object = try JSONSerialization.jsonObject(with: data) as? [[String: Any]] else { return nil }
guard let field1 = object[0]["field1_token"] as? [Any] else { return nil }
//do your thing
if let
путь:
if let object = try JSONSerialization.jsonObject(with: data) as? [[String: Any]],
let field1 = object[0]["field1_token"] as? [Any] {
//do your thing
}
Вы можете проверить статью от Apple Working with JSON in Swift
Также вы можете использовать некоторые из JSON синтаксического анализа/отображения libriaries например:
-1
Пожалуйста, замените let object : AnyObject
с let object : Any
.
Ошибка при неправильном литье.
Опубликовать актуальный код, а не изображение кода. Люди часто хотят воспроизвести свой код, чтобы попытаться устранить его – Takarii