Я получил следующий код, но он выдает ошибку «Отсутствует возвращение в функции, ожидающей возврата« Int »», так как правильно написать этот код, чтобы получить другое возвращаемое значение, зависит от различных условий if?

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

Спасибо!

0
alvin123 27 Фев 2018 в 06:48

4 ответа

Лучший ответ

Если у функции есть тип возвращаемого значения, тогда должен быть оператор must return, значит, функция должна возвращать что-то всегда. Теперь в вашем случае вы используете оператор if для обоих операторов return, что означает, что если оба оператора неверны, возвращаемого значения не будет. Используйте здесь if-else, который будет лучшим вариантом или

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 Фев 2018 в 09:29

У вас нет оператора возврата в случае, если ни if утверждение не является истинным.

Если есть только два варианта, вы можете просто использовать оператор else. Вероятно, было бы лучше, если бы category был enum, а не строкой, поскольку тогда вы можете быть уверены, что у вас есть исчерпывающий тест с использованием switch

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

давайте настроим методы рендеринга высоты строки табличного представления

 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 Фев 2018 в 06:05

Добавьте еще один возврат в самом конце вне любого оператора if .

Причина, по которой он выдает ошибку, заключается в том, что оба утверждения могут быть ложными и поэтому возвращать нечего!

Или, может быть, вы можете попробовать переключатель

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!
}

Удачи!!!

0
Pikachu620 27 Фев 2018 в 03:51