2010-03-13 10 views
13

me siguen dando la advertencia: el control llega al final de la función no-vacío "con este código:Advertencia: el control llega al final de la función no nula - iPhone

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

if (section ==0) 

{ 
    return [comparativeList count]; 
} 

if (section==1) 
{ 
    return [generalList count]; 
} 

if (section==2) 
{ 

    return [contactList count]; 

¿Cómo puedo deshacerme de esta advertencia?

Gracias.

Respuesta

57

Agregue return 0; al final de su método. Básicamente es a prueba de fallas, si no se cumple ninguna de las condiciones de if.

Si desea asegurarse de que se cumpla una de las condiciones, return -1; debe provocar que la aplicación genere una excepción y cuelgue, lo que podría ayudarlo a rastrear errores.

También puede ver modificar este método y reemplazar las instrucciones if con un árbol switch-case. Con un árbol switch-case, puede agregar fácilmente nuevas secciones y reorganizar su orden en un UITableView. El código se vuelve trivialmente fácil de leer mediante el uso de convenciones de nombres sensatas.

Es realmente fácil; Fraser Speirs tiene un good explanation on how to set this up.

+0

+1, los PO advertencia real es probable que "el control llega al final de la función ** ** no vacío". –

+0

Sí, básicamente cualquier método o función que dice que devolverá algo debería devolver algo. Como no hay garantía de que se cumpla ninguna de las condiciones 'si', es posible que no se devuelva nada. –

+0

Muchas gracias funcionó muy bien, y su explicación también fue muy útil. Realmente aprecio tu tiempo :) – Dave

4

Una opción:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

    if (section ==0) { 
     return [comparativeList count]; 
    } else if (section==1) { 
     return [generalList count]; 
    } 
    // section == 2  
    return [contactList count]; 
} 
Cuestiones relacionadas