2012-02-11 63 views
38

我在Xcode中得到以下錯誤:「無法編譯連接:」錯誤是什麼意思?

Couldn't compile connection: <IBCocoaTouchOutletConnection:0x401538380 
<IBProxyObject: 0x40154a260> => categoryPicker => <IBUIPickerView: 0x4016de1e0>> 

我已經縮小下來到故事板一個出口連接。我的代碼(大約30個有很多其他連接的視圖)編譯並運行正常,直到我從UIPicker添加一個連接到視圖的categoryPicker屬性。本身也能正常工作的選擇器,我不能沒有得到這方面的工作重新加載它:

@interface FiltersTableViewController : UITableViewController <UIPickerViewDataSource, UIPickerViewDelegate> { 
    NSFetchedResultsController *fetchedResultsController; 
    FilterTableViewController *filterView; 

    AppDelegate *appDelegate; 
    NSManagedObjectContext *managedObjectContext;  
} 

@property (nonatomic, strong) FilterTableViewController *filterView; 
@property (nonatomic, strong) NSFetchedResultsController *fetchedResultsController; 
@property (nonatomic, strong) NSManagedObjectContext *managedObjectContext; 

@property (nonatomic, weak) IBOutlet UIPickerView *categoryPicker; 

- (void)configureCell:(FilterTableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath; 
- (void)performFetch; 

@end 

的UIPickerView是一個UITableViewCell。這是故事板的圖像,從「categoryPicker」到「FiltersTableViewController」的連接導致錯誤: enter image description here

感謝您提出任何想法或有關如何調試它的建議!

編輯: 我刪除的連接,並增加了一個行numberOfComponentsInPickerView:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { 

    categoryPicker = pickerView; 

    return 1; 

}

這現在工作!但我想明白爲什麼連接不工作,那個錯誤消息意味着什麼。現在,這對我來說似乎是一團糟,因爲我在其他地方使用IB連接來獲取對象引用。

編輯2: 連接原型單元格會產生此錯誤:非法配置:連接「單元格」不能有原型對象作爲其目標。不確定這是否是Xcode 4.5中的新功能。

+0

似乎問題是,categoryPicker是「弱」,FilterTableViewController是「強」。嘗試使categoryPicker強壯,並檢查它是否有效 – doNotCheckMyBlog 2012-02-11 00:23:16

+1

謝謝。剛試過,但它沒有改變任何東西。 (我的印象是IBOutlets應該很弱......我從這裏得到:http://www.raywenderlich.com/5773/beginning-arc-in-ios-5-tutorial-part-2)。 – Symmetric 2012-02-11 00:32:51

+1

是的,這在技術上是正確的,對不起我的壞!正如我剛剛在Apple文檔中讀到的那樣! – doNotCheckMyBlog 2012-02-11 00:33:52

回答

107

問題是這是一個原型單元格。在它內部有一個出口是沒有意義的,因爲它不是一個真正的單元格:它可能是幾十或幾百個單元格的模型,在這種情況下,哪個單元可以指向哪個單元?

+2

謝謝!這是有道理的,其他地方我使用這種東西的連接使用靜態單元格。 – Symmetric 2012-02-11 01:25:09

+0

亞光,謝謝你的回答。我現在卡住了。我如何解決像標籤按鈕等這些對象沒有插座? – carbonr 2012-02-28 11:23:52

+7

使用標籤並調用'viewWithTag:'或UITableViewCell的子類,以便每個_cell_都有一個指向其_own_按鈕的插座。 – matt 2012-02-28 14:11:53

19

SWIFT 2

我創建一個酥料餅賽格瑞和我得到了同樣的錯誤。

我所做的只是按照@ matt的回答而不是將它放在單元格上,這是合乎邏輯的,現在他解釋了它!

相反,我把TableView作爲主角,它工作正常。

希望可以幫助那些未來。

+3

感謝您的加入,我在swift 2上遇到了這個問題,我不知道爲什麼 – darkndream 2015-12-02 20:49:44

+2

很高興幫助! @darkndream – lukaivicev 2015-12-03 07:35:25

+0

@lukesIvi所以你已經從代碼實現它? – 2017-01-02 14:22:50