2015-12-26 54 views
1

我有一个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的检查员...所以我不知道我能做什么错...你能帮助我吗?

编辑: 的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"]; 
    } 
} 

我试图与空隙的方法,但是我有同样的错误。如果我从另一个目标(主应用程序)调用方法,我没有崩溃,但是如果我从我的小部件那里做,是的,我会这样做。你有一个关于这个原因的想法吗?

+0

发布getTimes方法和任何lineName。 –

+0

您是否为应用程序和小部件启用了类的目标成员资格? – vadian

+1

代码是完美的,我只是删除了目标,创建了一个新的,现在它的工作... Xcode奥秘... – BigKangu

回答

2

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

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

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

+0

是的,你必须明确地链接到今日扩展中的NotificationCenter。我已经删除了NotificationCenter,认为我的扩展代码中的import语句会自动将它包含在我的应用程序目标中,但它不会。 – yood