Я отсутствовал в Swift в течение последних 12 месяцев, но только что вернулся к приложению, которое ранее работало (Swift 4.0), но теперь кажется, что происходит сбой, и я не уверен, почему.
МойПроблема связана с JSONDecoder и попыткой декодировать массив массивов строк.
var tryingToDecode: [[String]]
Используемый мной JSON имеет следующий формат (см. таблицу ниже) для фактических данныхПожалуйста, используйте следующую ссылку.
JASON DATA
![enter image description here](https://i.stack.imgur.com/M4BdC.png)
Код, который я использую (см. ниже) self.requestData - это данные JSON, которые я использую, которые работают при декодировании всех моих других данных, просто не работают с [[String]]
func TEST_decodeReceivedJSON() {
let decoder = JSONDecoder()
do {
let array = try decoder.decode(DataStruct.self, from: self.requestData)
print(array)
} catch {
print("Error")
}
}
Структура, которую я использую для декодирования:
struct DataStruct: Codable {
var data: [[String]]
}
Это просто тестовый код, но когда я его компилирую, я всегда получаю сообщение об ошибке catch.Я пробовал искать в Интернете, но не могу найти подходящих примеров.Странно то, что до Xcode 10 это работало, его даже приняли в App Store.Теперь несколько пользователей сообщили мне, что что-то не работает, и это действительно так, похоже, это связано с этим конкретным разделом, где [[String]] декодируется с использованием DataStruct.
Anyпомощь или указатели будут очень признательны.
[EDIT 001] Добавлена ссылка на данные JSON, код ниже показывает минимальный пример, меня особенно интересует, как я должен бытьдоступ к [[String]] - массиву массивов строк.Я пытаюсь убедиться, как это работало раньше, есть ли что-то не так с тем, как я пытаюсь декодировать JSON (возможно, обновление / изменение Swift), или есть проблема с JSONDecoder.
[РЕДАКТИРОВАТЬ 002] Решением было [[String?]], И проблема действительно была в JSON, вы просто не сможете увидеть это в текстовой метке необработанных данных, если вы посмотрите на табличное представление под вамиясно видно, что Элемент 10 имеет значение «ноль», и, как следствие, для кода требуется дополнительная строка.
![enter image description here](https://i.stack.imgur.com/GxIg3.png)