NSKeyedArchiver ноль значений в Dictcionary - PullRequest
0 голосов
/ 07 июля 2019

Я пытаюсь преобразовать словарь Swift в данные, используя NSKeyedArchiver.Мой вопрос: если в словаре есть некоторые ключевые значения как ноль, как NSKeyedArchiver должен обрабатывать это?Преобразует ли он nil-объект во что-то вроде NSNull или он аварийно завершит работу?

Ответы [ 2 ]

1 голос
/ 07 июля 2019

Если какой-либо из них nil или оба, он не рухнет

let key:String! = nil
let data = NSKeyedArchiver.archivedData(withRootObject:[key:""])
print(data) // 289 bytes
let res = try! NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data)
print(res) // Optional({"<null>" = "";})
0 голосов
/ 08 июля 2019

Если вы перевернете то, что написали @Sh_Khan, у вас будет ответ:

let key : String? = nil
let data = try! NSKeyedArchiver.archivedData(withRootObject: ["test":key], requiringSecureCoding: false)
print(data) // 293 bytes
let res = try! NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data)
print(res) // Optional({ test = "<null>"; })

Он преобразует nil значения в "<null>" строки.

...