Я работаю с [[String]]
, чтобы заполнить ячейки представления моей коллекции.
Я получаю эти данные с помощью API:
{
identifier: {
channel: "WorldChannel",
id: 1
},
message: {
map: "[[null,null,\"penguin\",null,\"penguin\",null,null],[null,\"penguin\",\"penguin\",\"penguin\",\"orca...ll,null,\"penguin\",null,null,null],[\"penguin\",\"penguin\",\"penguin\",null,null,null,null,null]]"
}
}
Для получения значения карты я использую:
struct ResponseData: Codable {
let message: Message
}
struct Message: Codable {
let map: String
}
Я пробовал работать с map
как [[String]]
, но декодирование дало мне следующую ошибку: CodingKeys (stringValue: «map», intValue: nil)], debugDescription: «Ожидается декодирование массива, но вместо этого обнаружена строка / данные». Это кажется справедливым, поскольку значение map
обернуто в " "
, хотя то, что внутри, явно является двумерным массивом. Часть декодирования:
let jsonData = string.data(using: .utf8)!
let responseData = try! JSONDecoder().decode(ResponseData.self, from: jsonData)
mapAsString = responseData.message.map
print(maAsString!)
приводит к:
[[null,"penguin","orca",...],...,[..."penguin",null,null]]
Я хочу сделать что-то вроде mapAs2DArray = mapAsString as! [[String]]
, но Xcode говорит, что он всегда терпит неудачу. Как я могу изменить тип данных? Как я могу заменить null
на nil
или любое другое значение для работы?