(看起来其他人在前几周遇到过这个问题,但我没有找到任何解决方案。)
我正在尝试做一件非常基本的事情:从我的 iOS 应用程序或我的 Watch 应用程序获取数据到我的复杂控制器。
事实证明,我做这件事的能力比我想象的要差。watchOS 2 过渡指南表明我应该使用以下代码“从扩展委托中获取所需的数据”:
ExtensionDelegate* myDelegate = [[WKExtension sharedExtension] delegate];
NSDictionary* data = [myDelegate.myComplicationData objectForKey:ComplicationCurrentEntry];
伟大的。除了,我无法弄清楚如何让它在扩展方面工作。尽管更重要的是,我似乎根本无法从复杂控制器启动中运行扩展委托代码。当我运行复杂功能时,我收到以下消息:“扩展收到唤醒复杂功能支持的请求。” 但是,任何扩展委托的方法中的代码似乎都没有运行。我还在每个方法中设置了断点,并且没有一个断点被命中。
看起来“transferCurrentComplicationUserInfo:”也被建议用于复杂功能更新,尽管目前还不清楚它是如何使用的。据我所知,它用于唤醒手表扩展,以便 ExtensionDelegate 可以存储新数据以供下次复杂控制器运行时使用,但由于上一个问题,我无法确认。
我有一个可能的解决方法(从复杂控制器 ping 服务器并希望会话变量持续存在,以便我可以发送相关数据),但是如果我不能解决这个问题,我的复杂工作很有可能会被淹没。这里的任何帮助都是巨大的。
顺便说一句,这是我为“getCurrentTimelineEntryForComplication”提供的代码,如果这有帮助的话。
- (void)getCurrentTimelineEntryForComplication:(CLKComplication *)complication withHandler:(void(^)(CLKComplicationTimelineEntry * __nullable))handler {
NSDate* entryDate = [NSDate date];
ExtensionDelegate* myDelegate = [[WKExtension sharedExtension] delegate];
NSString* data = [myDelegate.complicationData objectForKey:@"meow"];
NSLog(@"complication data: %@", data);
CLKComplicationTimelineEntry* entry = [self getTimelineEntry:@"2015-08-25 00:19:42" entryDate:entryDate complication:complication];
handler(entry);
}