Не удается преобразовать данные в NSDictionary - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь преобразовать данные из URLSession в NSDictionary, но это не удается при преобразовании данных в словарь.

После:

let json = try? JSONSerialization.jsonObject(with: data!, options: [])
print(json ?? "NotWorking")

выходы

(
  {
    babyId = 1;
    id = 17;
    timestamp = "2018-06-30 09:23:27";
  }
)

Но когда я пытаюсь преобразовать его в словарь с последующим выводом nil.

let json = try? JSONSerialization.jsonObject(with: data!, options: []) as? NSDictionary

Вывод веб-страницы

[{"id":"17","babyId":"1","timestamp":"2018-06-30 09:23:27"}]

Где происходит ошибка?

1 Ответ

0 голосов
/ 03 июля 2018

[ ] означает массив в формате JSON. { } означает словарь. У вас есть массив словаря. Обратите внимание, что при печати массива в Swift вы увидите ( ).

Не используйте NSArray или NSDictionary в Swift без чётко понятной и конкретной причины. Используйте массив Swift и словарь правильных типов.

Ваш код должен быть:

do {
    if let results = try JSONSerialization.jsonObject(with: data!) as? [[String:Any]] {
        // results is now an array of dictionary, access what you need
    } else {
        print("JSON was not the expected array of dictonary")
    }
} catch {
    print("Can't process JSON: \(error)")
}

И действительно, вы не должны использовать data! тоже. Где-то выше этого у вас должно быть if let data = data {

...