私はユーザーがプロフィールを見ているかどうかをチェックする機能を持っています。ここに私の機能があります。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
}
}
をしかし、私のコンソールには、印刷された「真を返す:USERは、現在のユーザではありません」何千回も停止しないでください。私は私のコードのどこでも、決して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()
}
}
別のviewController。
ブレークポイントを作成し、2-3回スタックトレースを表示できますか? –
デバッガを使用して、なぜこれが起きているのかを確認してください。 – rmaddy
ブレークポイントを使用し、コールスタックトレースをチェックし、コールスタック( 'NSThread.CallStackSymbols()')を自己記録し、XCodeを使って 'isUserViewCurrentUser()'をチェックすることができます。 – Larme