web-dev-qa-db-fra.com

Que signifie l'erreur "Impossible de compiler la connexion:"?

Je reçois l'erreur suivante de Xcode:

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

J'ai réduit cela à une seule connexion de sortie dans le storyboard. Mon code (environ 30 vues avec de nombreuses autres connexions) se compile et s'exécute correctement jusqu'à ce que j'ajoute une connexion à partir d'un UIPicker à la propriété categoryPicker de la vue. Le sélecteur lui-même fonctionne également très bien, je ne peux tout simplement pas le recharger sans que cette connexion fonctionne:

@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

L'UIPickerView est dans une UITableViewCell. Voici une image du storyboard, la connexion de "categoryPicker" à "FiltersTableViewController" provoque l'erreur: enter image description here

Merci pour toutes les idées ou suggestions sur la façon de le déboguer!

EDIT: J'ai supprimé la connexion et ajouté une ligne à numberOfComponentsInPickerView:

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

    categoryPicker = pickerView;

    return 1;

}

Cela fonctionne maintenant !, mais j'aimerais comprendre pourquoi la connexion ne fonctionnera pas et ce que signifie ce message d'erreur. Pour l'instant, cela me semble un peu compliqué, car j'utilise les connexions IB partout ailleurs pour obtenir des références d'objet.

EDIT 2: La connexion d'une cellule prototype génère cette erreur: Configuration illégale: la connexion "Cellule" ne peut pas avoir un objet prototype comme destination. Je ne sais pas si c'est nouveau dans Xcode 4.5.

40
Symmetric

Le problème est qu'il s'agit d'une cellule prototype. Cela n'a pas de sens d'avoir une sortie vers quelque chose, car ce n'est pas une vraie cellule: c'est un modèle pour ce qui pourrait être des dizaines ou des centaines de cellules, et vers quelle sortie la sortie pointe-t-elle dans ce cas?

111
matt

Swift 2

Je créais un enchaînement popover et j'obtenais la même erreur.

Ce que j'ai fait, c'est suivre la réponse de @ matt par sans le mettre dans une cellule, ce qui est logique maintenant qu'il l'a expliqué!

Au lieu de cela, j'ai mis le TableView comme ancre et cela a bien fonctionné.

J'espère que cela aidera ceux à l'avenir.

22
Lukesivi