Использование пользовательского набора UserDefault для ключей пространства имен - PullRequest
0 голосов
/ 06 января 2020

Я знаю, что типичный вариант использования пользовательского набора для UserDefaults в iOS (не macos) - это обмен данными с расширениями приложения.

Интересно, имеет ли смысл использовать пользовательский набор, такой как

class UserData {

    private var source = UserDefaults(suiteName: "MyApp.userData")!

    ...
}

, чтобы лучше изолировать (или немного улучшить "пространство имен") значения ключей, связанные с модулем приложения? От другого. В простом примере я хотел бы сохранить некоторые пользовательские данные (не стоит вставлять их в обычную БД) и стереть их, например, при выходе пользователя из системы.

Использование standard UserDefaults потребует от меня добавления префикс к ключам, или обернуть все вызовы, или аналогичные подходы, но мне кажется, что использование набора является просто более подходящим (каламбур непреднамеренным), так как я мог без опасения напрямую удалить его или перебрать его (по причинам) касания других клавиш или наихудшего перезаписи существующих (конфликт ключей).

TLDR: Можно ли использовать более чем набор для сохранения небольших данных вместо монолитов c UserDefault? С какими минусами можно столкнуться, я не нашел ни одной статьи (не касающейся обмена данными о расширениях), и, как обычно, документация Apple почти ясна, если не вводит в заблуждение.

Бонус: Initilly i хотя это также исключило бы все эти системные внедренные ключи, но после теста оказалось, что они также копируются в экземпляр пакета UserDefaults, несмотря на то, что я не «добавил» пакет как дочерний элемент standard. , у вас есть объяснение этому?

...