2015-04-01 76 views
4

我正在尝试在我的应用程序中使用应用程序组权限来处理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吗?

回答

0

这是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]; 
+0

由于WatchOS 3(我认为)userDefaults没有对手表不再可用,即使应用程序组是正确的。 – mxcl 2017-11-13 18:37:33