从today-extension访问settings.bundle

Chr*_*ian 11 ios settings.bundle ios8 today-extension

在应用程序中,我可以在设置中选择应使用哪种语言.如果未选择任何内容,则会检测并选择iPhone语言为英语,法语或德语.如果这些语言都不是iPhone语言,则设置为使用英语.手动更改设置中的语言可以正常工作.现在我添加了一个今天的扩展,它运行得很好但我需要访问settings-bundle来获取语言的NSUserDefaults(如果手动更改).在这两个目标中,我激活了App-Groups

group.com.companyname.appname
Run Code Online (Sandbox Code Playgroud)

并选择它.

在应用程序中我得到了语言

NSString *manualLanguageSet = [[NSUserDefaults standardUserDefaults] valueForKey:SPRACHWAHL];
Run Code Online (Sandbox Code Playgroud)

在今天的扩展中,我试图通过:

NSString *manualLanguageSet = [[[NSUserDefaults alloc] initWithSuiteName:@"group.com.companyname.appname"] valueForKey:SPRACHWAHL];
Run Code Online (Sandbox Code Playgroud)

对于NSLog(@"Settings-Sprache: %@", manualLanguageSet);运行today-extension时的结果是(无论是否在设置中选择了哪种语言)

2014-09-13 16:48:36.331 HdB今日[3734:284836]设置 - Sprache:(null)

我该怎么做才能更正/如何访问设置(settings.bundle)?

Pio*_*otr 2

我也在寻找它。我知道如何做到这一点的唯一方法是通过 SharedContainer。在你的例子中你应该打开你的

[[[NSUserDefaults alloc] initWithSuiteName:@"group.com.companyname.appname"] valueForKey:SPRACHWAHL];

在容器应用程序中,然后从容器应用程序的 NSUserDefaults 复制语言值,如下所示:

[[[NSUserDefaults alloc] initWithSuiteName:@"group.com.companyname.appname"] setObject:[NSUserDesaults standardUserDefaults] objectForKey:SPRACHWAHL] forKEY:@"Your Key in extension"]];

然后您将能够访问扩展中的共享容器并获取这些值。

如果有人有更好的方法,我也很高兴知道。