应用程序组中的NSUserDefaults无效

时间:2015-04-01 14:15:21

标签: ios objective-c iphone nsuserdefaults ios-app-group

我正在尝试在我的应用中使用App Groups Entitlement来处理iPhone应用和WatchKit扩展之间的NSUserDefaults数据。

我在iPhone目标中访问了Capabilities,并启用了App Groups,并确保选择了group.com.316apps.iPrayed。然后我去了WatchKit扩展目标并为其功能做了同样的事情。

在应用程序的iPhone端,我输入了以下代码:

PFUser *me2 = [PFUser currentUser];
        NSLog(@"USERNAME%@", me2.username);
                NSUserDefaults *testDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.316apps.iPrayed"];
        [testDefaults setObject:me2.username forKey:@"username"];
        [testDefaults setObject:me2.password forKey:@"password"];

        [testDefaults synchronize];

在WatchKit InterfaceController中,我有以下内容,但NSLog始终显示'null'

NSUserDefaults *testDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.316apps.iPrayed"];
    NSString *theirUser = [testDefaults objectForKey:@"username"];
    NSString *theirPass = [testDefaults objectForKey:@"password"];
    NSLog(@"%@", theirUser);

为什么WatchKit没有正确读取NSUserDefaults?

注意我的套件标识符对于监视工具包扩展目标是不同的。我需要一个新的Apple ID吗?

1 个答案:

答案 0 :(得分:0)

您的捆绑标识符不一样,但它们应采用此格式

The App Bundle ID -> com.companyName.productName
The Extension Bundle ID -> com.companyName.productName.extensionName

如果他们遵循上述格式,请参阅下面的答案

您需要添加一个知道NSUserDefaults中的值何时发生变化的观察者。

参考此代码:

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(userDefaultsDidChange:)
                                                 name:NSUserDefaultsDidChangeNotification
                                               object:nil];