2015-12-26 55 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