Я знаю, что типичный вариант использования пользовательского набора для UserDefaults в iOS (не macos) - это обмен данными с расширениями приложения.
Интересно, имеет ли смысл использовать пользовательский набор, такой как
class UserData {
private var source = UserDefaults(suiteName: "MyApp.userData")!
...
}
, чтобы лучше изолировать (или немного улучшить "пространство имен") значения ключей, связанные с модулем приложения? От другого. В простом примере я хотел бы сохранить некоторые пользовательские данные (не стоит вставлять их в обычную БД) и стереть их, например, при выходе пользователя из системы.
Использование standard
UserDefaults потребует от меня добавления префикс к ключам, или обернуть все вызовы, или аналогичные подходы, но мне кажется, что использование набора является просто более подходящим (каламбур непреднамеренным), так как я мог без опасения напрямую удалить его или перебрать его (по причинам) касания других клавиш или наихудшего перезаписи существующих (конфликт ключей).
TLDR: Можно ли использовать более чем набор для сохранения небольших данных вместо монолитов c UserDefault? С какими минусами можно столкнуться, я не нашел ни одной статьи (не касающейся обмена данными о расширениях), и, как обычно, документация Apple почти ясна, если не вводит в заблуждение.
Бонус: Initilly i хотя это также исключило бы все эти системные внедренные ключи, но после теста оказалось, что они также копируются в экземпляр пакета UserDefaults, несмотря на то, что я не «добавил» пакет как дочерний элемент standard
. , у вас есть объяснение этому?