我有一个 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/