我正在尝试在我的应用中使用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吗?
答案 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];