Мое изолированное приложение работало нормально в 10.8, но в 10.9 кажется, что пользовательские настройки по умолчанию .plist вообще не сохраняются.

Приложение в песочнице работало нормально в 10.8, но в 10.9 кажется, что пользовательские настройки по умолчанию. plist вообще не сохраняется. Расположение plist:

~/Library/Containers/com.example.myapp/Data/Library/Preferences/com.example.myapp.plist

и если я его удалю, он больше не создастся. В 10.8 это работало.

Кто-нибудь видел это раньше или может кто-нибудь предложить решение?


person xarp    schedule 10.10.2013    source источник
comment
Вместо того, чтобы удалять файлы через файловую систему, используйте «удаление по умолчанию», NSUserDefaults или CFPreferences для удаления данных. Если вы должны использовать файловую систему, неподдерживаемый обходной путь, требующий меньше времени, чем перезагрузка, заключается в запуске killall -SIGTERM cfprefsd. Обратите внимание, что удаление файлов настроек вручную никогда не работало полностью надежно и не поддерживалось.   -  person Catfish_Man    schedule 19.10.2013
comment
Спасибо Catfish_Man. Это обходной путь и объяснение этого. По-видимому, cfprefsd изменил поведение кеша, и решение для удаления контейнера состоит в следующем: 1) использовать «удаление по умолчанию» для удаления настроек 2) запустить «killall -SIGTERM cfprefsd» после удаления контейнера 3) выйти из системы или перезагрузиться после удаления контейнера.. .   -  person xarp    schedule 23.10.2013


Ответы (3)


Проблема решается перезагрузкой, короче. Настройки сохраняются правильно, и все работает нормально, пока я снова не удалю папку контейнера приложения. Затем снова требуется перезагрузка, чтобы исправить это.

person xarp    schedule 11.10.2013
comment
Мне потребовалось 2 часа, пока я не нашел это. Перезагрузка помогает. Я бы сказал, что это ошибка в песочнице - person codingFriend1; 08.03.2014
comment
Здорово, что я наконец нашел этот пост. Я только что потратил два дня, пытаясь понять, почему мой код для хранения закладок области безопасности в настройках внезапно сломался. Перезагрузка действительно помогла ... (Да, я думаю, что в какой-то момент у меня была итерация по созданию новой версии приложения (очень сложный механизм сборки без Xcode), упаковка, переустановка с помощью установщика sudo и т. Д., Удалил вручную файл plist вместе с остальной частью контейнера, что, по-видимому, является плохим ходом.) - person tml; 08.08.2016

Мой обходной путь для этой проблемы — убить процессы демона cfprefsd после внесения изменений в файл .plist:

пс авкс | grep cfprefsd | grep -v grep | awk '{напечатать $2}' | xargs sudo kill -2

Демоны будут перезапущены после следующего доступа к файлу .plist и будут иметь новое значение для измененного ключа.

К сожалению, этот обходной путь необходим, но, по крайней мере, он работает надежно.

person Bruce Hall    schedule 07.11.2013

У меня была эта проблема прошлой ночью (я все еще разрабатываю свое приложение). Я исправил это, удалив папку контейнера приложения (переместив весь ~/Library/Containers/com.domain.appname в корзину в Finder) и повторно запустив приложение.

Сначала я перезагрузился, так как увидел, что есть какой-то файл LSShared, связанный с моим приложением, который не будет очищен из корзины до перезагрузки.

Я могу только представить, что это периодически возникающая ошибка в Mavericks (семя GM).

EDIT Комментарий об ошибке может быть неверным; судя по этой ветке форума разработчиков Apple, похоже, что .plist файлов "уходят" . Однако в конце дня мое приложение (и ОП) перестало работать, поэтому оно работает ненадежно.

person trojanfoe    schedule 10.10.2013
comment
В моем случае после удаления папки контейнера она действительно воссоздается при первом запуске из xcode. Тем не менее, любые изменения в настройках не сохраняются. Вроде NSUserDefaults вообще не синхронизируется, даже если я сам его называю - person xarp; 10.10.2013
comment
@xarp Ах, я перепроверю сегодня вечером, однако я проверил запуск, изменение настроек, закрытие и перезапуск, и все сработало хорошо. Я проведу более тщательный тест. - person trojanfoe; 10.10.2013
comment
Ветка форума была закрытой, но немного запуталась в некоторых деталях. Я ответил на него с более точной информацией. - person Catfish_Man; 19.10.2013