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的主要内容,如果未能解决你的问题,请参考以下文章

在另一个文件中使用 NSString 对象总是显示空值?

Apple Watch Glance 将如何显示

猫鼬总是返回空数组? [复制]

猫鼬总是返回空数组? [复制]

Objc live Json Parsing Only 显示 1 项错误

将 ObjC NSNumber 代码迁移到 Swift 并在显示数字时遇到问题。