Этот вопрос задавался довольно много раз за эти годы, но он снова изменился в Swift 5, особенно в последних двух бета-версиях.
Чтение файла JSON кажется довольно простым:
func readJSONFileData(_ fileName: String) -> Array<Dictionary<String, Any>> {
var resultArr: Array<Dictionary<String, Any>> = []
if let url = Bundle.main.url(forResource: "file", withExtension: "json") {
if let data = try? Data(contentsOf: url) {
print("Data raw: ", data)
if let json = try? (JSONSerialization.jsonObject(with: data, options: []) as! NSArray) {
print("JSON: ", json)
if let arr = json as? Array<Any> {
print("Array: ", arr)
resultArr = arr.map { $0 as! Dictionary<String, Any> }
}
}
}
}
return resultArr
}
Но писать невероятно сложно, и все предыдущие методы, найденные на этом сайте, потерпели неудачу в Swift 5 на Xcode 11 бета-версиях 5 и 6.
Как записать данные в файл JSON в Swift 5?
Я пробовал эти подходы:
- Как сохранить массив в виде файла json в Быстро?
- Быстрая программная запись файла JSON
- чтение/запись локального json-файла swift 4
Не было никаких ошибок, кроме предупреждений об устаревании, и когда я их исправил, это просто не работало.
JSONSerialization
иJSONEncoder
такие же, как всегда. Вместо того, чтобы показывать нам несвязанный код для «чтения», который отлично работает, почему бы вам не показать нам код для «записи», который у вас не работает? Или поделитесь ссылкой или двумя на «все предыдущие методы, найденные на этом сайте, не увенчались успехом». - person Rob   schedule 27.08.2019try
, а неtry?
, заверните его вdo
-catch
и напечатайтеerror
вcatch
. Система выдачи ошибок точно сообщит вам, что происходит не так. Возможно, вы пытаетесь сохранить в пакет (который доступен только для чтения). Возможно, объект, который вы пытаетесь преобразовать, имеет некоторые свойства/значения, которые не могут быть представлены в формате JSON. Невозможно сказать без воспроизводимого примера. Но если вы не ловите ошибки, вы летите вслепую. - person Rob   schedule 27.08.2019Codable
для его достижения. Кроме того, это может быть полезно medium.com /@ахмадфайяс/. - person Ahmad F   schedule 27.08.2019file.json
? Он находится в каталоге моего проекта — доступен ли он для записи? А если нет, то как мне сделать его доступным для записи? - person Jack Bashford   schedule 27.08.2019