Я видел все другие сообщения SO об обмене данными NSUserDefaults между хост-приложениями и расширениями приложений, но мой все еще не работает. Вот все, что я сделал:
- Включите группы приложений на вкладке «Возможности» Xcode для расширения и хост-приложения.
- Установите имя группы на «group.com.mycompany.foo» и подтвердите, что расширение и хост-приложение добавлены в группу.
- Подтверждено, что файл прав существует для обоих с ключом «com.apple.security.application-groups», установленным на имя моей группы приложений. (Что бы это ни стоило, я также использую общие возможности цепочки для ключей между расширением и хост-приложением, и это работает, поэтому я не верю, что это проблема с правами)
- Восстановлены все профили обеспечения. Фактически, я даже отозвал все свои сертификаты и заново создал все профили после настройки группы приложений.
И после всего этого этот код все еще не работает:
// 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. Я понятия не имею, почему, и все параметры сборки настроены одинаково.
РЕДАКТИРОВАНИЕ 2. Для тех, кто настаивает на том, что мои возможности настроены неправильно, вот скриншот:
com.mycompany.foo.myapp
иcom.mycompany.foo.myapp.myappwatchkitextension
. Подстановочный знак здесь не сработает. - person lvp   schedule 06.03.2015