Время от времени, но не всегда (у меня это работало некоторое время), приложение/расширение переходит в состояние, когда я не могу прочитать флаг, установленный в моей группе приложений между моим сопутствующим приложением и моим расширением приложения. Не знаю, как он попадает в это состояние или почему значения различаются, но для моего приложения критично, чтобы они всегда были синхронизированы.
Просмотр сопутствующего приложенияDidLoad:
NSUserDefaults *myAppSettings = [[NSUserDefaults alloc] initWithSuiteName:@"group.myapp"];
.....
[myAppSettings setBool:true forKey:@"myBool"];
[myAppSettings synchronize];
NSLog([myAppSettings boolForKey:@"myBool"] ? @"Companion app - bool TRUE" : @"Companion app - bool FALSE");
ViewDidLoad расширения приложения
NSUserDefaults *myAppSettings = [[NSUserDefaults alloc] initWithSuiteName:@"group.myapp"];
[myAppSettings synchronize];
NSLog([myAppSettings boolForKey:@"myBool"] ? @"App extension app - bool TRUE" : @"App extension - bool FALSE");
Консольный вывод
Companion app - bool TRUE
App extension - bool FALSE
Я также синхронизирую, прежде чем мое приложение-компаньон перейдет в фоновый режим. У меня есть группа приложений, настроенная на портале и т. д.
Что я делаю неправильно?
ИЗМЕНИТЬ
Очевидно, у других тоже есть эта проблема: https://devforums.apple.com/message/977151#977151< /а>
«Я думаю, что в настоящее время это очень глючит.
Иногда обмен данными работает, затем происходит изменение, и вдруг виджет больше не может видеть общие данные (как на симуляторе, так и на устройстве).
Раздражает, и надеюсь, что в следующей бета-версии он станет немного надежнее!»
EDIT 2 Похоже, что другой человек также сообщил об этой проблеме:
«Я тоже заметил то же самое. Это происходит не только с NSUserDefaults, но и со всеми файлами в папке контейнера. Расширение клавиатуры внезапно потеряет разрешение на чтение/запись в папку контейнера после использования клавиатуры некоторое время».
ИЗМЕНИТЬ 3 Дополнительные доказательства: https://devforums.apple.com/message/1028078#1028078
После обновления до бета-версии 3 я заметил, что иногда клавиатура не может открыть базу данных, потому что ей не удается получить доступ к файлу БД. Клавиатура могла получить доступ к файлу раньше.
ИЗМЕНИТЬ 4
Похоже, это может быть из-за того, что клавиатура теряет флаг RequestsOpenAccess
. Но я не могу воспроизвести его, и я не могу сказать наверняка.
ИЗМЕНИТЬ 5
Похоже, другие сообщают об этом в сборке iOS8 GM:
Эта проблема все еще сохраняется для меня в GM. Кажется, это связано со сбоем клавиатуры... но также, похоже, между клавиатурой и содержащим приложением есть некоторые разногласия в отношении того, кто создает набор и в каком порядке. Я думаю, что эта проблема на стороне Apple. Поверьте мне, я ХОЧУ, чтобы это была моя вина, но я провел бесчисленное количество часов методом проб и ошибок. Независимо от того, что я делаю в коде и проверяю с помощью NSLog, в конечном итоге он окажется в этом состоянии. Надеюсь, кто-нибудь найдет волшебную таблетку. :С
Кто-нибудь решил это еще?