Я настроил группы приложений для своего приложения, чтобы получить доступ к тому же NSUserDefaults
в приложении и в моем расширении клавиатуры. У меня проблема. Я могу успешно записать логические значения по умолчанию, но когда я обращаюсь к нему на клавиатуре, он всегда возвращает false. Я знаю, что идентификатор, который он использует для ключа, и имя набора - то же самое. Я проверял, что группы приложений действительно включены как для приложения, так и для клавиатуры, а имя набора точно соответствует идентификатору группы приложений. Что может привести к тому, что он всегда будет false
при доступе с клавиатуры?Хранение bool в общих NSUserDefaults всегда возвращает false
В приложении:
NSUserDefaults *SharedDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.myname.sharedPrefsName"];
[SharedDefaults setBool:YES forKey:@"com.myname.appname.dataName"];
[SharedDefaults synchronize];
я подтвердить это действительно успешно приготовьтесь к YES в следующий раз, когда я запустить приложение:
NSUserDefaults *SharedDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.myname.sharedPrefsName"];
BOOL dataIsYes = [SharedDefaults boolForKey:@"com.myname.appname.dataName"]; //YES
Еще в клавиатуре это всегда ложь:
let sharedprefs = NSUserDefaults(suiteName: "group.com.myname.sharedPrefsName")!
let data = sharedprefs.boolForKey("com.myname.appname.dataName") //false
Стандартные пользовательские настройки по умолчанию не совпадают при доступе от приложения к клавиатуре - это два разных контейнера, поэтому вам нужно установить значения по умолчанию с тем же именем пакета. – Joey