从其他目标访问今日扩展的方法?

时间:2015-12-26 01:15:19

标签: 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?

时间表信息针对Xcode右侧检查员的两个目标......所以我不知道我能做错什么......你能帮助我吗?

编辑: getTimes方法:      - (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方法,但是我遇到了同样的错误。如果我从另一个目标(主应用程序)调用一个方法,我没有崩溃,但如果我从我的小部件做,是的,我做。你知道原因吗?

1 个答案:

答案 0 :(得分:7)

这意味着您或某人意外地从您正在运行的目标中删除了一个框架或库。

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

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