Сохранение стандартных NSUserDefaults с включенными группами приложений

Исходная ситуация:

Я разрабатываю изолированное приложение на macOS 10.13. Это приложение типа "обувной коробки", состоящее из главного окна с панелью инструментов. Автосохранение для оконной рамы и конфигурации панели инструментов настраивается в Интерфейсном Разработчике.

Если я запускаю и закрываю приложение, я вижу файл настроек (с именем <app-identifier>.plist) содержит ожидаемые данные в контейнере песочницы приложения. Все отлично работает

Расширение приложения с помощью групп приложений:

Чтобы разрешить обмен данными с другими изолированными приложениями, я создал группу приложений в моей целевой Capabilities вкладка Xcode.

Пока это работает, то есть при запуске приложения создается дополнительный контейнер группы. Также можно сохранить общие настройки в контейнере группы, создав UserDefaults объект через UserDefaults.init(suiteName:"<group-name>"),

Эта проблема:

После добавления группы приложений механизм автосохранения, например, для настройки панели инструментов, больше не работает. Запуск и выход из приложения на чистом Mac больше не создает .plist файл в Preferences каталог контейнера приложения. Вместо этого консоль показывает такие сообщения:

[User Defaults] attempt to set <value> for key in <key> in
non-persistent preferences domain CFPrefsPlistSource<address>
(Domain: <app-identifier>, User: kCFPreferencesCurrentUser,
ByHost: No, Container: (null), Contents Need Refresh: Yes)

Мне кажется, что механизм автосохранения больше не может записывать свои данные в файл настроек.

Можно ли одновременно использовать стандартные UserDefaults и общие в группах приложений?

1 ответ

Решение

Проблема решена: после перезагрузки Mac все работает как положено. Это действительно странно.

Другие вопросы по тегам