NSKeyedArchiver
возвращает 0/1 вместо True False для Bools.
На игровой площадке:
import UIKit
let data : [String: Any] = ["test": false]
let documentURL = FileManager().urls(for: .documentDirectory, in: .userDomainMask).first
let filePath = "MyArchive.data"
let fileURL = documentURL?.appendingPathComponent(filePath)
// Archive
if let dataToBeArchived = try? NSKeyedArchiver.archivedData(withRootObject: data, requiringSecureCoding: true) {
try? dataToBeArchived.write(to: fileURL!)
}
// Unarchive
if let archivedData = try? Data(contentsOf: fileURL!),
let myObject = (try? NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(archivedData)) as? [String:Any] {
myObject
}
результат: [ "test": 0]
Я не использую свой собственный класс / кодер. Я просто хочу использовать [String:Any]
. Типы неизвестны, поэтому я использую Any.