NSUserDefaults Boolean возвращает false при использовании расширения приложения - PullRequest
0 голосов
/ 05 июня 2018

Я использую расширение уведомлений в своем приложении для изменения звука уведомлений.

Когда пользователь выключает UISwitch на странице настроек, я сохраняю в NSUserDefaults a boolean для отслеживания состояния.

Однако у меня есть 2 разные раскадровки длядва разных языка, каждый из которых имеет свой собственный стиль.

Когда я использую раскадровку A и печатаю состояние boolean в консоли, оно печатает это состояние правильно.Но когда я меняю язык, значит, загружается другая раскадровка B.boolean всегда возвращает false.

Хотя логическое значение всегда возвращает false, я проверил звук уведомления, оно работает правильно.

Любая идея, почему boolean всегда возвращается false?Мне нужно правильное значение, чтобы правильно отобразить состояние мелодии звонка на странице настроек.

Вот код, который я использую:

- (void)setPlayDefaultSound:(BOOL)playDefaultSound
{
    NSUserDefaults *def = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.xx.xxx.NotificationServices"];
    [def setBool:playDefaultSound forKey:@"playDefaultSound"];
    [def synchronize];
}
- (BOOL)playDefaultSound
{
    NSUserDefaults *def = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.xx.xxx.NotificationServices"];
    return [def boolForKey:@"playDefaultSound"];
}

А вот скриншот информации.лист расширения услуг по уведомлению:

enter image description here

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Произошло несоответствие имени в возможностях, опечатка.

Теперь работает нормально.

0 голосов
/ 05 июня 2018

Вы создаете новые экземпляры NSUserDefaults каждый раз.Используйте один и тот же экземпляр каждый раз.

Используйте это вместо.

- (void)setPlayDefaultSound:(BOOL)playDefaultSound
{

   [[NSUserDefaults standardUserDefaults] setBool:playDefaultSound forKey:@"playDefaultSound"];
   [[NSUserDefaults standardUserDefaults] synchronize];
}
- (BOOL)playDefaultSound
{
    return [[NSUserDefaults standardUserDefaults] boolForKey:@"playDefaultSound"];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...