完成块Swift后设置标签文本

S. *_*rti 6 thread-safety ios parse-platform swift

我想将用户名设置为标签,因为我的块("findObjectsInBackgroundWithBlock")需要时间来完成,而label.text设置为nil.

完成块后如何设置标签文本?

class test {         

var userName: String? // variable to access user name returned by block        
private func loadData() {      

getCurrentUser()         
lblUserName.text = userName       

}    

}
Run Code Online (Sandbox Code Playgroud)

这是我从Parse获取用户数据的块.

private func getCurrentUser() {         

        if PFUser.currentUser() != nil { 

            currentUser = PFUser.currentUser()?.username    
            let query = PFQuery(className: "_User")    
            query.whereKey("username", equalTo: currentUser!)    
            query.findObjectsInBackgroundWithBlock { (currentUsers, error) -> Void in 
                if error == nil {     
                    for user in currentUsers! {     
                       userName = user["name"] as? String      
                    }   
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

Guy*_*her 1

您可以在这里使用属性观察器,如下所示:

var userName: String? {
    didset {
       if let name = username {
           lblUserName.text = name
       } 
    }
}
Run Code Online (Sandbox Code Playgroud)