web-dev-qa-db-ja.com

「接続をコンパイルできませんでした」というエラーはどういう意味ですか?

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に1行を追加しました:

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

    categoryPicker = pickerView;

    return 1;

}

これで動作します!しかし、接続が機能しない理由とそのエラーメッセージの意味を理解したいと思います。オブジェクト参照を取得するために他の場所でIB接続を使用しているので、今のところ、これは私にとって不便のようです。

編集2:プロトタイプセルを接続すると、次のエラーが生成されます。無効な構成:接続 "セル"は、宛先としてプロトタイプオブジェクトを持つことができません。これがXcode 4.5の新機能かどうかはわかりません。

40
Symmetric

問題は、これがプロトタイプセルであることです。それは実際のセルではないので、その中に何かへのアウトレットを持つことは無意味です。それは数十または数百のセルのモデルであり、その場合、アウトレットはどのポイントを指しますか?

111
matt

Swift 2

popover segueを作成していて、同じエラーが発生していました。

私がしたことは、@ mattの回答をセルに配置しないことでした。これは、彼が説明した今では論理的です!

代わりに、私はTableViewをアンカーとしてを配置しましたが、うまくいきました。

それが将来の人々を助けることを願っています。

22
Lukesivi