WatchKit NSUserDefaults имеют значение null

Делаем настоящий базовый тест по настройке/получению данных с помощью NSUserDefaults. Мое приложение для iPhone работает и прекрасно настраивает данные, но на часах оно становится нулевым.

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

В ViewController.m

    defaults = [[NSUserDefaults alloc] initWithSuiteName:@"com.defaultmethod.share"];

[defaults setObject:playerName forKey:@"playerName"];
[defaults synchronize];

В InterfaceController.m

- (void)awakeWithContext:(id)context {
    [super awakeWithContext:context];

    // Configure interface objects here.
    defaults = [[NSUserDefaults alloc] initWithSuiteName:@"com.defaultmethod.share"];
    [defaults synchronize];
}

- (void)willActivate {
    // This method is called when watch view controller is about to be visible to user
    [super willActivate];

    NSLog(@"playerName: %@", [defaults objectForKey:@"playerName"]);
}

И все, что я получаю в ответ, это:

имя_игрока: (null)

Я должен упустить что-то настолько очевидное. Когда я использую NSLog на стороне iphone, все работает нормально, поэтому я знаю, что оно сохраняется правильно.


person Drew    schedule 13.05.2015    source источник


Ответы (1)


Вы должны убедиться, что следующие настройки находятся в правильном месте.

  • Проверьте файл Entitlement.plist для своего приложения и расширения комплекта просмотра, он должен иметь тот же идентификатор группы приложений.
  • Убедитесь, что вы выбрали правильную команду разработчиков в информационном разделе каждой цели.
  • У вас установлены правильные профили подготовки мобильных устройств.

Вы можете протестировать эти настройки в разделе возможностей целевого приложения и расширения watchkit.

person deoKasuhal    schedule 14.05.2015
comment
Проверить. Проверить. Проверить. Это странная часть. Я был разочарован, поэтому я пошел на портал разработчиков, стер свои группы приложений и все свои старые тестовые проекты и начал с нуля. Во второй раз сработало как волшебство... Что ж, может быть, я спишу это на Гремлинов. :-) - person Drew; 14.05.2015