以下是自定义结构。我想存储 [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 返回 nil
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)")
}
}