Ios Swift UITableView索引超出范围错误

Ios Swift UITableView索引超出范围错误,ios,swift,uitableview,Ios,Swift,Uitableview,我正在Swift中运行Firebase应用程序。在这里,我获取追随者和以下用户。在用户刚刚注册的情况下,应用程序会崩溃,因为可能还没有追随者/追随者用户。我已经想尽一切办法来处理这个错误,但都没有用。我的问题是: 1.我怎样才能避免这次撞车? 2.我有没有办法用一张图片或一个按钮来代替空白表格,从而将它们重定向到其他用户 代码如下: func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -&

我正在Swift中运行Firebase应用程序。在这里,我获取追随者和以下用户。在用户刚刚注册的情况下,应用程序会崩溃,因为可能还没有追随者/追随者用户。我已经想尽一切办法来处理这个错误,但都没有用。我的问题是: 1.我怎样才能避免这次撞车? 2.我有没有办法用一张图片或一个按钮来代替空白表格,从而将它们重定向到其他用户

代码如下:

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: "InProfileCell", for: indexPath) as! ConnectionsCell

        if currentIndex == 1 {
            let user = followerusers[indexPath.row]
            cell.showFollowersUsers(val: user)
            print("follower")
        } else {
            let user = followingUsers[indexPath.row]
            cell.showFollowingUsers(val: user)
            print("following")
        }

        return cell
    }

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

        if currentIndex == 0 {
            return followingUsers.count
        } else {
            return followerusers.count
        }
    }

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

numberOfRows
cellForRow
中的逻辑不一致。您的
numberOfRows
声明

if currentIndex == 0 {
    followingUsers
} else {
    followerUsers
}
if currentIndex == 1 { //NOTE THAT YOU ARE USING 1 HERE INSTEAD OF 0
    followerUsers
} else {
    followingUsers
}
但是,您的
cellForRow
与此不一致,因为它声明

if currentIndex == 0 {
    followingUsers
} else {
    followerUsers
}
if currentIndex == 1 { //NOTE THAT YOU ARE USING 1 HERE INSTEAD OF 0
    followerUsers
} else {
    followingUsers
}

现在当
currentIndex
为2时,
numberOfRows
将返回
followers
的计数,但
cellForRow
将尝试访问
followers
的值(而不是
followers
)。这就是您获取索引超出范围的原因。

您的
numberOfRows
cellForRow
中的逻辑不一致。您的
numberOfRows
声明

if currentIndex == 0 {
    followingUsers
} else {
    followerUsers
}
if currentIndex == 1 { //NOTE THAT YOU ARE USING 1 HERE INSTEAD OF 0
    followerUsers
} else {
    followingUsers
}
但是,您的
cellForRow
与此不一致,因为它声明

if currentIndex == 0 {
    followingUsers
} else {
    followerUsers
}
if currentIndex == 1 { //NOTE THAT YOU ARE USING 1 HERE INSTEAD OF 0
    followerUsers
} else {
    followingUsers
}

现在当
currentIndex
为2时,
numberOfRows
将返回
followers
的计数,但
cellForRow
将尝试访问
followers
的值(而不是
followers
)。这就是您获取索引超出范围的原因。

什么是
currentIndex
?您应该使用每个函数中给出的
indexPath
,崩溃发生在哪一行?@Paolo
currentIndex
只是一个变量,用于通知我在哪个段中。我使用的是自定义段控制器视图在段更改之后而不是之前重新加载表视图。在
func-didSelect(u-segmentIndex:Int)
中,有多种方法可以显示替代视图,而不是空表视图。最简单的方法是隐藏表视图和添加替代视图。或者您可以使用
tableView.backgroundView
tableView.tableHeaderView
也是一个可能的点。什么是
currentIndex
?您应该使用每个函数中给出的
indexPath
,崩溃发生在哪一行?@Paolo
currentIndex
只是一个变量,用于通知我在哪个段中。我使用的是自定义段控制器视图在段更改之后而不是之前重新加载表视图。在
func-didSelect(u-segmentIndex:Int)
中,有多种方法可以显示替代视图,而不是空表视图。最简单的方法是隐藏表视图和添加替代视图。或者您可以使用
tableView.backgroundView
<代码>表视图。tableHeaderView也是一个可能的点。