我正在使用Xcode 7b5。
我已经阅读了所有可以找到的东西。但我仍然无法让这件事变得简单。
My Glance总是在手表模拟器中的awakeWithContext中显示一个空错误
我正在使用Objective-C语言。 我已导入WatchKit和WatchConnectivity
以下是我在iPhone上的ViewController中的代码:
// glance used on the watch
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.testing.test"];
//set a value of SystemState for the key
[defaults setObject:SystemState forKey:@"SharingStatus"];
// synchronise
[defaults synchronize];
“SystemState”只是一些文字。在GlanceController.m我有这个:
//use group user defaults
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.testing.test"];
//get the object
NSString *statusData = [defaults objectForKey:@"SharingStatus"];
NSLog(@"Error = %@", statusData);
我已经为主iPhone目标设置了一个应用程序组,并为手表扩展目标使用了相同的组。
我的开发者帐户显示应用程序组确实存在。
在代码的手机端,我可以使用以下方法在磁盘上找到应用程序组首选项:
[[[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.testing.test"] relativePath]);
所以我知道“SystemState”值正在保存到共享文件夹
但无论出于何种原因,Glance总是返回null。现在我迷路了。有什么想法吗?
答案 0 :(得分:0)
NSUserDefaults在您的iOS应用程序和watchOS 2上的WatchKit扩展程序之间不起作用,因为这些进程在不同的设备上运行。您必须使用WatchConnectivity框架API来传输内容和更改。
要了解为什么这是必要的,以及如何做到这一点,我建议首先观看一些一般的WatchKit WWDC视频,然后再转到WatchConnectivity视频。