Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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 当主线程需要更新UI并且在viewDidLoad中被调用时,您如何处理主线程的解析调用?_Ios_Multithreading_Swift_Parse Platform - Fatal编程技术网

Ios 当主线程需要更新UI并且在viewDidLoad中被调用时,您如何处理主线程的解析调用?

Ios 当主线程需要更新UI并且在viewDidLoad中被调用时,您如何处理主线程的解析调用?,ios,multithreading,swift,parse-platform,Ios,Multithreading,Swift,Parse Platform,我真的很难理解多线程的概念。所有解析调用都是在主线程之外完成的,我理解这是因为您不想在等待回复时阻塞主线程。但是,如果我需要从解析中获取数据以在屏幕显示之前更新我的UI,我该怎么办 我将PFUser子类化以添加其他字段,因此我希望获得这些附加字段并用数据填充屏幕,以便用户可以修改其信息 func getCurrentUser () -> ParseUser? { let currentUser = PFUser.currentUser() var user: ParseU

我真的很难理解多线程的概念。所有解析调用都是在主线程之外完成的,我理解这是因为您不想在等待回复时阻塞主线程。但是,如果我需要从解析中获取数据以在屏幕显示之前更新我的UI,我该怎么办

我将PFUser子类化以添加其他字段,因此我希望获得这些附加字段并用数据填充屏幕,以便用户可以修改其信息

func getCurrentUser () -> ParseUser? {

    let currentUser = PFUser.currentUser()
    var user: ParseUser?

    let query = PFQuery(className:"_User")
    query.whereKey("objectId", equalTo: (currentUser.objectId!))
    query.findObjectsInBackgroundWithBlock  {
    (objects: [PFObject]?, error: NSError?) -> Void in

        dispatch_async(dispatch_get_main_queue()){
            if error == nil { 
            for object in objects! {
            user = object as! ParseUser
            }
        } else {
            print("Error: \(error!) \(error!.userInfo)")
            }
        }
    }
return user
print("user returned")

}

在显示视图之前调用此方法,并在dispatch_get_main_queue()块中写入对显示的任何更改,以便您的更改立即反映在UI上。您已经设置了用户对象,不能写入UILabel或带有用户名或其他内容的内容