【问题标题】:Glance alway show null objcGlance 总是显示空 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。现在我迷路了。有什么想法吗?

【问题讨论】:

    标签: ios objective-c


    【解决方案1】:

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

    要了解为什么这是必要的,以及如何做到这一点,我建议从观看一些通用的 WatchKit WWDC 视频开始,然后继续观看 WatchConnectivity 视频。

    【讨论】:

      猜你喜欢
      • 2012-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-20
      • 1970-01-01
      相关资源
      最近更新 更多