Glance 总是显示空 objc
Posted
技术标签:
【中文标题】Glance 总是显示空 objc【英文标题】:Glance alway show null objc 【发布时间】:2015-08-17 21:01:22 【问题描述】:我正在使用 Xcode 7b5。
我已经阅读了所有我能一目了然的东西。但我仍然无法让这个简单的事情发挥作用。
My Glance 总是在手表模拟器中的 awakeWithContext 中显示 null 错误
我使用的是 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 目标设置了一个应用组,并为手表扩展目标使用了相同的组。
我的开发者帐户显示应用组确实存在。
在手机端的代码中,我可以使用以下方法在磁盘上找到 App Group Preferences:
[[[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.testing.test"] relativePath]);
所以我知道“SystemState”值正在保存到共享文件夹中
但无论出于何种原因,Glance 总是返回 null。现在我迷路了。有什么想法吗?
【问题讨论】:
【参考方案1】:NSUserDefaults 在您的 ios 应用和 watchOS 2 上的 WatchKit 扩展之间不起作用,因为这些进程在不同的设备上运行。您必须使用 WatchConnectivity 框架 API 来传输内容和更改。
要了解为什么这是必要的,以及如何做到这一点,我建议从观看一些通用的 WatchKit WWDC 视频开始,然后继续观看 WatchConnectivity 视频。
【讨论】:
以上是关于Glance 总是显示空 objc的主要内容,如果未能解决你的问题,请参考以下文章