Неправильная часть вашего кода: вы пытаетесь преобразовать result["result"]
в единственное число String
, а это не так!это массив строк.Итак, что вы должны сделать, это:
if let results = result["result"] as? [String] {
print(results[0]) // first mark in the array (100 marks)
}
Кроме того:
На этом этапе я бы рекомендовал следовать подходу шаблонизации данные вместо того, чтобы иметь дело со словарями.Поскольку у вас есть действующий Json, вы можете легко добиться этого с помощью протокола Docadable
, пример:
let json = """
{
"status": 1,
"status_code": 200,
"result": [
"100 marks",
"30 marks",
"40 marks",
"70 marks"
]
}
""".data(using: .utf8)
struct Result: Decodable {
var status: Int
var statusCode: Int
var result: [String]
enum CodingKeys: String, CodingKey {
case status
case statusCode = "status_code"
case result
}
}
let decoder = JSONDecoder()
let resultObject = try decoder.decode(Result.self, from: json!)
print(resultObject)