You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS社交应用点击他人个人主页显示当前登录用户问题排查求助

问题根源与快速修复方案

嘿,我一眼就揪出问题所在了!你的核心bug出在UserService.fetchUser这个方法里,和ProfileController其实没啥关系~

先看看你写的这段代码:

static func fetchUser(withUid uid: String, completion: @escaping(User) -> Void) {
    guard let uid = Auth.auth().currentUser?.uid else { return }
    Collection_Users.document(uid).getDocument { snapshot, error in
        guard let dictionary = snapshot?.data() else { return }
        let user = User(dictionary: dictionary)
        completion(user)
    }
}

你明明在调用的时候传入了要查看的目标用户uid,但方法内部却直接把这个参数覆盖掉,改用当前登录用户的uid去查询Firebase文档了!不管你点击的是谁,最后查出来的都是你自己的用户数据,这就难怪显示的总是当前登录用户的信息了。

修复方法超简单

只需要把方法里那行多余的guard let uid = Auth.auth().currentUser?.uid else { return }删掉,直接用传入的uid参数就行:

static func fetchUser(withUid uid: String, completion: @escaping(User) -> Void) {
    Collection_Users.document(uid).getDocument { snapshot, error in
        guard let dictionary = snapshot?.data() else { return }
        let user = User(dictionary: dictionary)
        completion(user)
    }
}

额外确认下其他环节(确保没别的坑)

修复后可以快速验证这几点:

  • FeedCell的showUserProfile方法确实传递了正确的viewModel.post.ownerUid(你已经打印过这个值是对的,这部分没问题)
  • FeedController里拿到uid后,正确调用了UserService.fetchUser,并且用返回的user初始化了ProfileController(这部分代码逻辑是对的)
  • ProfileController的header也正确使用了传入的user来创建ProfileHeaderViewModel(这部分也没问题)

改完之后再测试,点击其他用户的主页应该就能正常显示对方的信息啦!

内容的提问来源于stack exchange,提问作者haju kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 20:02:39