所以我有一个功能,检查用户是否正在查看他们的个人资料。这是我的功能。为什么return语句不会停止程序?
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
}
}
但我的控制台印有“返回true:用户不是当前用户”一千次,永不止步。我在代码中无处不在,我永远不会在for循环或任何循环中运行isUserViewCurrentUser()
。
这是我的用户数据:
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()
}
}
发送用户对象时用户选项卡的实现代码如下细胞成另一个viewController。我每当想获得对用户对象的引用时都会打电话
你可以做一个断点,并显示2-3次堆栈跟踪? –
使用调试器,看看为什么会发生这种情况。 – rmaddy
您可以使用断点并检查调用堆栈跟踪,将自己的调用堆栈('NSThread.allStackSymbols()')和XCode记录到日志中,检查名为isUserViewCurrentUser()的位置。 – Larme