所以我有一个功能可以检查用户是否正在查看他们的个人资料。这是我的功能。
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时发送用户对象。每当我想获得对用户对象的引用时,我就会调用它
答案 0 :(得分:1)
Personaly我看到你有两个不同引用的对象,你检查它们是否相等......即使里面的数据是相同的,实际引用也不是。
如果是这种情况,您可以通过ID之类的独特内容进行检查。
如果user.id == Current.user.id { }
我不知道你想要达到什么目的,但在我个人看来(没有冒犯)有一些有臭味的东西...... :)。你可以考虑更好的解决方案。
希望这会有所帮助,祝你一切顺利。
答案 1 :(得分:0)
在viewWillAppear
中,您拨打isUserViewCurrentUser()
,呼叫userDataDelegate.userData()
。您没有发布userData()
的内容,但我敢打赌它会导致您的观看次数再次出现,或者再次调用isUserViewCurrentUser()
。
无论如何,请发布userData()
代码......