0
我試圖編寫一個單元測試,設置視圖控制器,我試過兩種方法來獲取視圖init,第一種方法是使用該包加載筆尖內容並篩選出我正在尋找的那個對,如下:不同的目標是不同的nib類?
MyViewController *controller = nil;
....
NSArray* nibContents = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil];
NSEnumerator *nibEnumerator = [nibContents objectEnumerator];
NSObject* nibItem = nil;
while ((nibItem = [nibEnumerator nextObject]) != nil) {
if ([nibItem isKindOfClass:[MyViewController class]]) {
controller = (MyViewController*) nibItem;
break;
} else {
NSLog(@"nibItem class is %@", [nibItem class]);
NSLog(@"nibItem is %@", nibItem);
}
}
後這些代碼完成後,控制器仍然是零,我已經插入一些日誌檢查筆尖類(%@佔位符),和原來是一樣的MyViewController(至少兩個類的描述都是這樣),我非常確定這些代碼在調試/發佈目標中工作得很好,但是在我運行單元測試時它不起作用。
那麼,這意味着類是不同的,雖然他們的類描述是相同的?
我試過的第二種方法是使用initWithNibNamed:owner:options方法,只是簡單地指定xib文件名,但Xcode回覆說nib加載了但view outlet沒有設置,情況就像問題描述的那樣找到,但我必須仔細檢查,事情已經設置正確:
- 在接口Buildedr,指定自定義類名
- XIB文件添加到副本建立資源部分名單在我的測試目標
- 將tableview出口鏈接到接口文件(雖然我不能將視圖出口拖到我的班級,但是它自動指向類中的tableView)
直到現在,我可以通過手動方式來獲取測試通道,以設置視圖控制器的視圖和表格視圖。
它的工作原理!感謝Gaurav Rastogi!順便說一句,有什麼我可以參考知道爲什麼會發生? – 2013-05-07 05:49:37