Glance总是显示null objc

时间:2015-08-17 21:01:22

标签: ios objective-c

我正在使用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。现在我迷路了。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

NSUserDefaults在您的iOS应用程序和watchOS 2上的WatchKit扩展程序之间不起作用,因为这些进程在不同的设备上运行。您必须使用WatchConnectivity框架API来传输内容和更改。

要了解为什么这是必要的,以及如何做到这一点,我建议首先观看一些一般的WatchKit WWDC视频,然后再转到WatchConnectivity视频。