首页 > 解决方案 > 无法在当前视图上显示 json 数据 - Linkedin iOS 集成(Swift 4.2)

问题描述

我在获取变量“firstName”的内容以显示在当前视图上时遇到问题。

我有一个有两个选项卡的分段视图控制器。我想在标签“nameLabel”上显示 firstName,这是使用下面的代码片段的主要容器视图之一。

linkedinHelper.authorizeSuccess({ (lsToken) -> Void in
    print("linkedin token: \(lsToken)")               

    linkedinHelper.requestURL("https://api.linkedin.com/v1/people/~:(id,first-name,last-name,email-address,picture-url,picture-urls::(original),positions,date-of-birth,phone-numbers,location)?format=json", requestType: LinkedinSwiftRequestGet, success: { (response) -> Void in                
        let profileDictionary:[String : Any] = response.jsonObject as! [String : Any]

        self.linkedinprofile.firstName = profileDictionary["firstName"] as! String

        let firstName = profileDictionary["firstName"] as! String
        self.nameLabel?.text = firstName            
    })                    
}, error: { (error) -> Void in
    //Encounter error: error.localizedDescription     
}, cancel: { () -> Void in
    //User Cancelled!            
})

但是,在此代码执行后,标签保持为空。我对此进行了很多尝试,但无济于事。但是当我用第二个容器视图中的标签替换标签时,当我单击该容器视图时,标签会显示我需要的内容!

您对此的帮助将不胜感激!!

谢谢,

标签: iosswiftsdkclosureslinkedin

解决方案


尝试nameLabel在主线程中更新。所有 UI 更新都必须在此处进行。

DispatchQueue.main.async {
    self.nameLabel?.text = firstName
}

nameLabel或者也许那是一个还不存在的时刻。在那里放一个断点,看看是不是nil


推荐阅读