4

我正在尝试在我的应用程序中使用应用程序组权利来处理 iPhone 应用程序和 WatchKit 扩展之间的 NSUserDefaults 数据。

我去了 iPhone 目标中的 Capabilities,并打开了 App Groups,并确保选择了 group.com.316apps.iPrayed。然后我去了 WatchKit Extension Target 并对其 Capabilities 做了同样的事情。

在应用程序的 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 吗?

4

1 回答 1

0

没关系,你的包标识符不一样,但是它们应该是这种格式

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

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

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

参考这段代码:

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(userDefaultsDidChange:)
                                                 name:NSUserDefaultsDidChangeNotification
                                               object:nil];
于 2015-04-01T14:22:00.297 回答