为什么return语句不会停止程序?

时间:2017-04-06 21:10:41

标签: ios iphone swift

所以我有一个功能可以检查用户是否正在查看他们的个人资料。这是我的功能。

func isUserViewCurrentUser() -> Bool {
    guard let user = userDataDelegate?.userData() else {
        return false
    }

    if user == Current.user {
        print("returning false: USER IS CURRENT USER")
        return false
    } else {
        print("returning true: USER IS NOT CURRENT USER")
        return true
    }

 }

然后我只在视图中运行我的函数会出现,代码应该在我打印之后停止:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)
    if isUserViewCurrentUser() == true {
        self.navigationItem.rightBarButtonItem = nil
        self.navigationItem.leftBarButtonItem = nil
        return
    } else {
        return
    }

    if let userID = userDataDelegate?.userData().userID {
        retrieveFollowerNumbers(userIdentifier: userID)
        return
    }

 }

但我的控制台打印了#34;返回true:用户不是当前用户"一千次,永不停止。我在代码中随处可见,我从未在for循环或任何循环中运行isUserViewCurrentUser()

这是我的userData:

protocol SendUserDataDelegate {

    func userData() -> User
}

didSelect TableViewCell:

if let user = filteredUsers?[indexPath.row] {
        userToPass = user
        profileController?.userDataDelegate = self
        self.navigationController?.pushViewController(profileController!, animated: true)

    }

这个代码在我的cellRowAtIndexPath:

if isUserViewCurrentUser() == true {
            cell.bioAndFollowStackView.addSubview(cell.followButtonOutlet)
        } else {
            if cell.followButtonOutlet != nil {
                cell.followButtonOutlet.removeFromSuperview()
            }
        }

当用户将tableview单元格标记到另一个viewController时发送用户对象。每当我想获得对用户对象的引用时,我就会调用它

2 个答案:

答案 0 :(得分:1)

Personaly我看到你有两个不同引用的对象,你检查它们是否相等......即使里面的数据是相同的,实际引用也不是。

如果是这种情况,您可以通过ID之类的独特内容进行检查。

如果user.id == Current.user.id { }

我不知道你想要达到什么目的,但在我个人看来(没有冒犯)有一些有臭味的东西...... :)。你可以考虑更好的解决方案。

希望这会有所帮助,祝你一切顺利。

答案 1 :(得分:0)

viewWillAppear中,您拨打isUserViewCurrentUser(),呼叫userDataDelegate.userData()。您没有发布userData()的内容,但我敢打赌它会导致您的观看次数再次出现,或者再次调用isUserViewCurrentUser()

无论如何,请发布userData()代码......