ios - 从其他目标访问方法到 Today Extension?

标签 ios objective-c today-extension

我有一个 iOS 应用程序有两个目标:主要(应用程序)和今天的扩展小部件。在主要目标中,我有一个名为“TimetablesInformation”的类,如果我从自己的目标调用该类的方法,一切都会正常进行。但是,如果我尝试通过以下方式从另一个目标(小部件)访问该类:

TimetablesInformation *info = [[TimetablesInformation alloc] init];
[info getTimes:@"1" forLine:lineName];

它因以下代码错误而崩溃:

2015-12-26 01:48:04.420 Closer Times[15689:307103] __extensionContextClass != nil - 
/BuildRoot/Library/Caches/com.apple.xbs/Sources/libextension/libextension
82/libextension/Common/NSExtensionContext.m:164: Unable to find
NSExtensionContextClass (_NCWidgetExtensionContext) in extension bundle -
did you link the framework that declares the extension point?

TimetablesInformation 针对 Xcode 右侧检查器上的两个目标...所以我不知道我做错了什么...请帮帮我好吗?

编辑: 获取时间方法: -(NSArray *)getTimes:(NSString *)actualView forLine:(NSString *)lineName {

if ([actualView isEqual: @(1)]){
    if ([lineName  isEqual: @"Point A - Point B"]) {
        self.workingDayTimesArray = @[@"07:00",@"07:30",@"08:00",@"08:30",@"09:00",@"09:30",@"10:00", @"10:30",@"11:00",@"11:30",@"12:00",@"12:30",@"13:00",@"13:30", @"14:00",@"14:30",@"15:00",@"15:30",@"16:00",@"16:30",@"17:00", @"17:30",@"18:00",@"18:30",@"19:00",@"19:30",@"20:00",@"20:30", @"21:00",@"21:30",@"22:00",@"22:30"];
   }
}

我试过使用 void 方法,但我有同样的错误。如果我从另一个目标(主应用程序)调用一个方法,我没有崩溃,但如果我从我的小部件调用,是的,我崩溃了。你知道原因吗?

最佳答案

这意味着您或其他人不小心从您正在运行的目标中删除了一个框架或库。

就我而言,当有人从“常规”选项卡中的“链接框架和库”或“构建阶段”选项卡中的“链接二进制文件与库”中删除 NotificationCenter.framework 时,我遇到了此崩溃错误。因此,要修复它,您只需再次添加它,一切都会正常。

因此,当您重新创建 TodayExtension 目标时,它默认链接了 NotificationCenter.framework。这就是为什么在此之后一切都对您有用。

关于ios - 从其他目标访问方法到 Today Extension?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34467747/

相关文章:

iphone - 获取当前时间并保持更新 - Objective-C

iphone - 像默认的 MessageComposer 一样将联系人/号码添加到 Textview/文本字段中

swift - 在扩展之间共享 UserDefaults

ios - 什么时候在 Swift 中为 View /图层设置边界和框架?

ios - 添加 UITextField 会卡住应用程序

iphone - 从 iPhone/iPad 默认设置面板创建新电子邮件?

ios - AVSpeechSynthesizer 特殊字符

iphone - iOS平移和缩放动画

macos - 创建不包含应用程序的 OS X Today 扩展

ios - 在 App 和 Today Extension 中使用 Firebase 不起作用