NSCoder не может декодировать объект во второй раз, если объект уже был успешно декодирован.IOS

Программируем под IOS
Ответить
Anonymous
 NSCoder не может декодировать объект во второй раз, если объект уже был успешно декодирован.

Сообщение Anonymous »


Я использую NSSecureCoding для кодирования/декодирования некоторых объектов и в процессе тестирования нескольких способов разархивирования объекта заметил, что удаление некоторых операторов печати изменило поведение декодера. Объект NSCoder «уничтожается» при удалении объекта? Это ожидаемое поведение?
До
Например, этот FakeObject хранится в "FakeObjectKey". Если я попытаюсь декодировать его тремя разными способами и распечатать результат, он будет следующим.

print("FakeObject существует? \(coder.containsValue(forKey: "FakeObjectKey"))")) print("FakeObject небезопасен? \(coder.decodeObject(forKey: "FakeObjectKey"))")) print("FakeObject защищен? \(coder.decodeObject(of: FakeObject.self, forKey: "FakeObjectKey"))")) Вывод, где кажется, что он работает, а затем дважды дает сбой:

FakeStorekeeper существует? истинный FakeStorekeeper небезопасен? ноль FakeStorekeeper безопасен? ноль После Но если я закомментирую первые два оператора печати, вы увидите, что третий метод действительно успешен:

// print("FakeObject существует? \(coder.containsValue(forKey: "FakeObjectKey"))")) // print("FakeObject небезопасен? \(coder.decodeObject(forKey: "FakeObjectKey"))")) print("FakeObject защищен? \(coder.decodeObject(of: FakeObject.self, forKey: "FakeObjectKey"))")) Изменения вывода:
FakeObject безопасен? Необязательно (< FakeObject: 0x60000022a180>)
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»