2016-09-15 3 views
-4

Я преобразовал в Swift 3 и получил следующие ошибки при назначении AnyObject JSONSerialization.jsonObject. Кто-нибудь сталкивался с этой проблемой и знал об исправлении?JSONSerialization AnyObject Вопросы преобразования SWIFT3

enter image description here

+3

Опубликовать актуальный код, а не изображение кода. Люди часто хотят воспроизвести свой код, чтобы попытаться устранить его – Takarii

ответ

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 например:

SwiftyJSON

Gloss

-1

Пожалуйста, замените let object : AnyObject с let object : Any.

Ошибка при неправильном литье.