2012-02-11 11 views
38

Estoy recibiendo el siguiente error de Xcode:¿Qué significa el error "No se pudo compilar la conexión:"?

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

He reducido esto a una sola conexión de salida en el guión gráfico. Mi código (cerca de 30 vistas con muchas otras conexiones) se compila y funciona bien hasta que agregue una conexión de un UIPicker a la propiedad de la categoría de la vista de la vista. El selector en sí también funciona bien, simplemente no puede volver a cargarlo sin conseguir esta conexión funcione:

@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 

la UIPickerView está en una UITableViewCell. Aquí está una imagen del guión gráfico, la conexión desde "categoryPicker" a "FiltersTableViewController" provoca el error: enter image description here

Gracias por cualquier idea o sugerencia sobre cómo depurar él!

EDIT: que eliminan la conexión y añade una línea a numberOfComponentsInPickerView:

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

    categoryPicker = pickerView; 

    return 1; 

}

Esto funciona ahora !, pero me gustaría entender por qué la conexión no funcionará y lo que significa ese mensaje de error En este momento, esto me parece un desafío, ya que uso conexiones IB en cualquier otro lugar para obtener referencias de objetos.

EDITAR 2: La conexión de un prototipo de celda genera este error: Configuración no válida: Conexión "Celda" no puede tener un objeto prototipo como su destino. No estoy seguro si esto es nuevo en Xcode 4.5.

+0

Parece que el problema es que categoryPicker es "débil" y FilterTableViewController es "fuerte". Trate de hacer que categoryPicker sea fuerte también y verifique si eso funciona – doNotCheckMyBlog

+1

Gracias. Lo intenté, pero no cambia nada. (Tengo la impresión de que IBOutlets debería ser débil ... Lo entiendo aquí: http://www.raywenderlich.com/5773/beginning-arc-in-ios-5-tutorial-part-2). – Symmetric

+1

Sí, eso es técnicamente correcto, lo siento mal! ¡Como acabo de leer eso en la documentación de Apple también! – doNotCheckMyBlog

Respuesta

107

El problema es que se trata de una celda prototipo. No tiene sentido tener una salida a algo en ella, porque no es una célula real: es un modelo para lo que podrían ser docenas o cientos de células, y ¿a cuál apunta la salida en ese caso?

+2

¡Gracias! Eso tiene sentido ahora, los otros lugares que uso conexiones para este tipo de cosas usan células estáticas. – Symmetric

+0

matt, gracias por la respuesta. Estoy atascado ahora. ¿Cómo trato estos objetos como el botón de etiqueta, etc. sin una salida? – carbonr

+7

Usa las etiquetas y llama a 'viewWithTag:', o a la subclase UITableViewCell para que cada _cell_ tenga una salida que apunte a su _own_ button. – matt

19

SWIFT 2

estaba creando un segue popover y que estaba recibiendo el mismo error.

Lo que hice fue seguir la respuesta de @ matt por sin ponerlo en una celda, ¡lo cual es lógico ahora que lo explicó!

En su lugar, puse el TableView como el ancla y funcionó bien.

Espero que ayude a aquellos en el futuro.

+3

Gracias por agregar esto, tuve este problema en Swift 2 y no sabía por qué – darkndream

+2

¡Me alegro de que haya sido útil! @darkndream – lukaivicev

+0

@lukesIvi ¿Lo has implementado desde el código? –

Cuestiones relacionadas