Я видел все остальные сообщения SO о совместном использовании данных NSUserDefaults между хост-приложениями и расширениями приложений, но мои все еще не работают. Здесь все, что я сделал:
- Включить группы приложений на вкладке "Возможности" Xcode для приложения расширения и хоста.
- Задайте имя группы "group.com.mycompany.foo" и подтвердите, что добавление и хост-приложение добавлены в группу.
- Подтвержден файл прав для обоих с ключом "com.apple.security.application-groups", установленным для моего имени группы приложений. (Для чего это стоит, я также использую общие возможности keychain между приложением расширения и хоста, и это работает - поэтому я не верю, что это проблема с правами).
- Регенерирует все профили обеспечения. Фактически, я даже отозвал все свои сертификаты и обновил все профили после настройки группы приложений.
И после всего этого код все равно не работает:
// in the host app
NSUserDefaults *testDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.mycompany.foo"];
[testDefaults setObject:@"TEST" forKey:@"foo"];
[testDefaults synchronize];
а затем:
// in the extension
NSUserDefaults *testDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.mycompany.foo"];
NSLog(@"%@", [testDefaults objectForKey:@"foo"]);
что приводит к:
(null)
Когда я смотрю в настройках Xcode, я замечаю эти значки, ни один из которых не имеет иконки "Группа приложений":
Но, как я уже говорил, я дошел до того, как очистил свои профили ключей, сертификаты и профилирование после настройки группы приложений. Итак, если это действительно проблема, как добавить право на профили?
Что мне не хватает? Я свеж от идей.
Справка
EDIT. Группы доступа работают в моем расширении Today и Safari, а не в расширении WatchKit. Я понятия не имею, почему, и все настройки сборки отображаются так же.
EDIT 2. Для тех, кто настаивает на том, что мои возможности не настроены должным образом, снимок экрана: