У меня есть JSON файл, который я читаю с диска
Это структура файла:
[
{
"name": "3X",
"priority": 33
},
{
"name": "4X",
"priority": 32
}
]
Я декодирую его в класс с именем Test
class TestClass: NSObject, Codable {
enum CodingKeys: String, CodingKey {
case name, priority
}
let name:String
let priority:Int
var optional:String? = nil
var problem:String = "eli"
init(name:String, priority:Int, optional:String? = nil, problem:String) {
self.name = name
self.priority = priority
self.optional = optional
self.problem = problem
super.init()
}
}
Это код, который я использую для декодирования файла
if let path = Bundle.main.path(forResource: "test", ofType: "json") {
do {
let jsonData = try Data(contentsOf: URL(fileURLWithPath: path), options: .mappedIfSafe)
let testObjects = try JSONDecoder().decode([TestClass].self, from: jsonData)
let data = try! NSKeyedArchiver.archivedData(withRootObject: testObjects, requiringSecureCoding: false)
UserDefaults.standard.set(data, forKey: "test_objects")
} catch {
// error in parsing json
}
}
После декодирования я пытаюсь сохранить массив на диск, однако я преобразовываю его в NSData для сохранения, однако NSKeyedArchiver.archivedData
терпит неудачу со следующей ошибкой:
{NSDebugDescription=Caught exception during archival: -[BugTesting.TestClass encodeWithCoder:]: unrecognized selector sent to instance 0x600002119ac0
Для меня это выглядит очень странно, поскольку я согласен с Codable
.
Любая помощь будет оценена.