Проверьте, что Словарь является допустимым списком (перед сохранением в пользовательские настройки по умолчанию) - PullRequest
0 голосов
/ 04 февраля 2020

Я хочу сохранить данные в UserDefault из неизвестного источника. В документах говорится, что словарь должен быть допустимым объектом списка свойств .

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

class A {}
let invalidDict = [ "Key" : A() ]
UserDefaults.standard.set(invalidDict, forKey: "Key") 
// error: Execution was interrupted, reason: signal SIGABRT

Я хочу просто зарегистрировать проблему, а не сбой. Окружение блоком do catch не работает.

Есть ли способ предотвратить cra sh или проверить произвольный словарь, допустимый формат plist?

1 Ответ

2 голосов
/ 04 февраля 2020
class A {}
let invalidDict = [ "Key" : A() ]
PropertyListSerialization.propertyList(invalidDict, isValidFor: .binary) // false

Но

let validDict = [ "Key" : "howdy" ]
PropertyListSerialization.propertyList(validDict, isValidFor: .binary) // true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...