NSUserDefault与App Group在iOS 8 Beta3中无法正常工作

3

我需要在我的应用程序中,通过自定义键盘扩展保存布尔值到NSUserDefault并与应用组共享。

我的代码可以在 Beta1中运行。

self.defaults = [NSUserDefaults standardUserDefaults];

if([self.defaults boolForKey:@"BlackKey"])
    {
        NSLog(@"Black");
    }

    else
    {
        NSLog(@"White");
    }

但在iOS 8 Beta3中不是这样。 当我从NSUserDefault检索Boolean值时,它没有返回任何内容,因此我无法从自定义键盘扩展中加载。 我还尝试了在NSUserDefault中使用initWithSuiteName。 这个问题只发生在我身上吗?还是在iOS 8 Beta3中有bug?
2个回答

2
几个可能的解决方案是:
  1. 您的应用程序组未正确设置,或者您未使用正确的组标识符与initWithSuiteName:一起使用。

  2. 您尚未为键盘启用网络访问。当您为键盘禁用网络访问(默认行为)时,此文档提到以下内容:

    没有与包含应用程序共享的容器

  3. 这是一个错误。


那么你的意思是,我必须启用RequestsOpenAccess才能使用NSUserDefault吗? - Fire Fist
1
看起来这在beta 5中已经修复。 - bdev

-5

尝试使用

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"BlackKey"];

当您使用以下代码保存和读取它时:

if([[NSUserDefaults standardUserDefaults] boolForKey:@"BlackKey"]) {
    NSLog(@"Black");
}

else
{
    NSLog(@"White");
}

或者如果你已经这样做了,那么可能是个bug,而且Xcode 6 beta版本也有其他bug,所以最好在Xcode 5或更早的版本中尝试。


不是这样的。你应该说iOS 8 Beta和iOS 7,而不是XCode 8 Beta。 :D - Fire Fist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接