У меня есть быстрое приложение Swift 3
, которое взаимодействует с сервером для получения данных. Теперь я могу успешно подключиться к серверу. Проблема в том, что когда я хочу получить конкретные данные из результата JSON
, чтобы установить текстовое значение метки, я всегда получил значение Optional(x)
в консоли, а значение метки всегда nil
.Установить метку из результата JSONSerialization
Это формат моих данных, которые я получаю от сервера:
[A: 1,
B: 2,
C: 3]
И это, как я получаю это:
let task = session.dataTask(with: request) { data, response, error in
do {
guard let data = data else {
throw JSONError.NoData
}
guard let json = try JSONSerialization.jsonObject(with: data, options: []) as? NSDictionary else {
throw JSONError.ConversionFailed
}
self.labelA.text = json[“A”] as? String
} catch let error as JSONError {
print(error.rawValue)
} catch let error as NSError {
print(error.debugDescription)
}
}
task.resume()
Edit: Я также могу получить те форматы:
Дело 1:
[
{
id: 1,
fieldA: “nameA”,
fieldB: [“textA”, “textB", “textC”, “textD”],
fieldC: “nameC”
}
]
Случай 2:
{
id: 1,
fieldA: “nameA”,
fieldB: [“textA”, “textB", “textC”, “textD”],
fieldC: “nameC”
}
FieldB представляет собой массив из строки
Спасибо, что он работает! Не могли бы вы отредактировать свой ответ и сделать краткие примеры в случае [{A: 1, B: ["text1", "text2"], C: 3}], а также для случая {A: 1, B: 2, C: 3}? еще раз спасибо! –
Что вы ожидаете в случае 'B: [" text1 "," text2 "]'? И ваши примеры непоследовательны. Пожалуйста, дайте все ваши примеры в действительных строках JSON. В настоящий момент они также представляют собой консольный вывод словаря с помощью команды печати. Это очень сложно отличить строковые и числовые типы. Измените свой вопрос, затем я отредактирую ответ. – vadian
См. Мое редактирование –