Ниже приведена пользовательская структура. Я хотел сохранить массив пользовательских структур [details]. Не могу сохранить [детали] в файле. При написании этого [подробности в файле приложение вылетает из-за «недопустимого формата json»
struct details : Identifiable {
let id = UUID()
var name : String?
var time : String?
var msg : [MsgDetails]?
var loc : String?
var type : String?
}
Напишите в файле: msgArray — это массив деталей. msgArray = [детали].
extension Array {
var jsonStringRepresentation: String? {
let jsonData = try? JSONSerialization.data(withJSONObject: self, options: [])
guard jsonData != nil else {return nil}
let jsonString = String(data: jsonData!, encoding: .utf8)
guard jsonString != nil else {return nil}
return jsonString! as String
}
}
В приведенном ниже коде NSKeyedArchiver.archivedData возвращает ноль
if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first{
let fileURL = dir.appendingPathComponent(self.fileName)
let data = try? NSKeyedArchiver.archivedData(withRootObject: msgArray.jsonStringRepresentation!, requiringSecureCoding: true)
do {
try data!.write(to: fileURL)
} catch let error {
print("\(error.localizedDescription)")
}
}