Я получаю текст JSON, преобразовываю его в данные, а затем использую JSONDecoder для создания конкретного типа, представленного текстом/строкой JSON.
Он работает с моей «сложной» структурой данных (которая реализует Codable) или даже с простым массивом Int, как показано ниже:
import Foundation
let jsonTextContainigArrayOfInt: String = "[1,2,3]"
let data = jsonTextContainigArrayOfInt.data(using: .utf8)!
do {
let arrayOfInt: [Int] = try JSONDecoder().decode([Int].self, from: data)
for n in arrayOfInt {
print(n)
}
}
catch {
print(error)
}
Предыдущий код работает и правильно создает массив Int и печатает их.
Проблема возникает при использовании того же подхода с одним Int в JSON-тексте:
import Foundation
let jsonTextContainigOneInt: String = "1"
let data = jsonTextContainigOneInt.data(using: .utf8)!
do {
let myInt: Int = try JSONDecoder().decode(Int.self, from: data)
print(myInt)
}
catch {
print(error)
}
Для этого второго подхода я получаю следующую ошибку:
"Операция не может быть выполнена"
*** Изменить ***
Отчет об ошибке для этого уже существует: https://bugs.swift.org/browse/SR-6163
JSONSerialization
, проверьте этот ответ stackoverflow.com/ вопросы/47941826/ - person schmidt9   schedule 24.04.2018