1

以下はカスタム構造です。[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)")
            }
        }
4

1 に答える 1