NSUserDefaults
アプリとキーボード拡張機能で同じものにアクセスできるように、アプリのアプリ グループを設定しました。でも問題があります。ブール値をデフォルトに正常に書き込むことができますが、キーボードでアクセスすると、常に false が返されます。キーに使用しているIDとスイート名がまったく同じであることは事実です。アプリ グループが実際にアプリとキーボードの両方で有効になっており、スイート名がアプリ グループ識別子と正確に一致することを確認しました。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
ただし、キーボードでは常に false です。
let sharedprefs = NSUserDefaults(suiteName: "group.com.myname.sharedPrefsName")!
let data = sharedprefs.boolForKey("com.myname.appname.dataName") //false