Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift用户模型Flash Bug_Ios_Swift_Mvvm_Swiftui - Fatal编程技术网

Ios Swift用户模型Flash 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

我注意到我的应用程序中有一个bug,它会导致配置文件屏幕“闪烁”。我发现这与这一行有关(在我的viewmodel中),通过注释所有其他行直到我发现bug哈哈:

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
    
}