Obtuve el siguiente código, pero muestra el error "Falta el retorno en una función que se espera que devuelva 'Int'", entonces, ¿cuál es la forma correcta de escribir este código para obtener un valor de retorno diferente dependiendo de la condición diferente si?

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if category == "followings"{
        return usersRealNameFollowing.count
    }
    if category == "followers"{
        return usersRealNameFollower.count
    }
}

¡Gracias!

0
alvin123 27 feb. 2018 a las 06:48

4 respuestas

La mejor respuesta

Cuando una función tiene un tipo de retorno, debe haber una declaración de devolución obligatoria, la función media debe devolver algo siempre. Ahora, en su caso, está utilizando la declaración if para ambas declaraciones de devolución, lo que significa que si ambas declaraciones son incorrectas, no habrá valor de retorno. Use if-else aquí que sería la mejor opción o

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
           var count: Int()
           if category == "followings"{
                count = usersRealNameFollowing.count
           }else if category == "followers"{
                count = usersRealNameFollower.count
           }
    return count
}
0
makkhokher 27 feb. 2018 a las 09:29

No tiene una declaración de devolución en el caso en que ninguna de las declaraciones if sea verdadera.

Si solo hay dos opciones, puede usar una instrucción else. Probablemente sería mejor si category fuera un enum en lugar de una cadena, ya que puede estar seguro de que tiene una prueba exhaustiva con un switch

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if category == "followings"{
        return usersRealNameFollowing.count
    } else {
        return usersRealNameFollower.count
    }
}
0
Paulw11 27 feb. 2018 a las 03:53

configuremos los métodos para representar la altura de fila de la vista de tabla

 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        if category == "followings"{
            return usersRealNameFollowing.count

        }else if category == "followers"{
            return usersRealNameFollower.count

        }else{
            return 0

        }


    }
0
Nischal Hada 27 feb. 2018 a las 06:05

Agregue otra devolución al final fuera de cualquier declaración if .

¡La razón por la que le está dando el error es que es posible que ambas afirmaciones sean falsas y, por lo tanto, no haya nada que devolver!

O tal vez podría intentar cambiar

switch(catagory)
{
    case "following":
        return usersRealNameFollowing.count;
    case "followers":
        return usersRealNameFollower.count;
    default:
        return -1;   //This will catch the situations that non of the conditions are met!
}

¡¡¡Buena suerte!!!

0
Pikachu620 27 feb. 2018 a las 03:51