应用程序组中的NSUserDefaults不能正常工作
问题描述:
我正在尝试在我的应用程序中使用应用程序组权限来处理iPhone应用程序和WatchKit扩展之间的数据的NSUserDefaults。应用程序组中的NSUserDefaults不能正常工作
我去了iPhone目标中的功能,并打开了应用程序组,并确保选择了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的总是显示 '空'
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吗?
答
这是OK的包标识符是不一样的,但是他们应该在这种格式
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];
由于WatchOS 3(我认为)userDefaults没有对手表不再可用,即使应用程序组是正确的。 – mxcl 2017-11-13 18:37:33