Ios Swift用户模型Flash Bug
我注意到我的应用程序中有一个bug,它会导致配置文件屏幕“闪烁”。我发现这与这一行有关(在我的viewmodel中),通过注释所有其他行直到我发现bug哈哈:Ios Swift用户模型Flash Bug,ios,swift,mvvm,swiftui,Ios,Swift,Mvvm,Swiftui,我注意到我的应用程序中有一个bug,它会导致配置文件屏幕“闪烁”。我发现这与这一行有关(在我的viewmodel中),通过注释所有其他行直到我发现bug哈哈: self.user.stats = UserStats(posts: posts, followers: followers, following: following) 整个功能: func fetchUserStats() { guard let uid = user.id else { retu
self.user.stats = UserStats(posts: posts, followers: followers, following: following)
整个功能:
func fetchUserStats() {
guard let uid = user.id else { return }
COLLECTION_FOLLOWING.document(uid).collection("user-following").getDocuments { snapshot, _ in
guard let following = snapshot?.documents.count else { return }
COLLECTION_FOLLOWERS.document(uid).collection("user-followers").getDocuments { snapshot, _ in
guard let followers = snapshot?.documents.count else { return }
COLLECTION_POSTS.whereField("ownerUid", isEqualTo: uid).getDocuments { snapshot, _ in
guard let posts = snapshot?.documents.count else { return }
//print(posts)
self.user.stats = UserStats(posts: posts, followers: followers, following: following)
}
}
}
}
然后,这些信息(在我看来)被呈现出来:
错误在于它导致概要文件屏幕闪烁一次,这是因为它首先将stats视图设置为默认值0,然后设置为实际值。
当我删除“viewModel.user.stats?.posts±0”并将其替换为静态int(如20)时,闪烁消失。
你知道为什么它会导致整个屏幕闪烁吗?是否有任何解决办法使屏幕不闪烁
对于上下文,我在用户模型中将用户统计信息声明为可选值:
struct User: Identifiable, Decodable {
let username: String
let email: String
var profileImageUrl: String
let fullname: String
@DocumentID var id: String?
var bio: String?
var stats: UserStats?
var isFollowed: Bool? = false
var verified: Bool?
var isCurrentUser: Bool { return AuthViewModel.shared.userSession?.uid == id }
}
struct UserStats: Decodable {
var posts: Int
var followers: Int
var following: Int
}
谢谢
雅各布
struct User: Identifiable, Decodable {
let username: String
let email: String
var profileImageUrl: String
let fullname: String
@DocumentID var id: String?
var bio: String?
var stats: UserStats?
var isFollowed: Bool? = false
var verified: Bool?
var isCurrentUser: Bool { return AuthViewModel.shared.userSession?.uid == id }
}
struct UserStats: Decodable {
var posts: Int
var followers: Int
var following: Int
}