ios - 无法在当前视图上显示 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!
})
但是,在此代码执行后,标签保持为空。我对此进行了很多尝试,但无济于事。但是当我用第二个容器视图中的标签替换标签时,当我单击该容器视图时,标签会显示我需要的内容!
您对此的帮助将不胜感激!!
谢谢,
解决方案
尝试nameLabel
在主线程中更新。所有 UI 更新都必须在此处进行。
DispatchQueue.main.async {
self.nameLabel?.text = firstName
}
nameLabel
或者也许那是一个还不存在的时刻。在那里放一个断点,看看是不是nil
。
推荐阅读
- android - 无法在局部变量“@BindViews”中使用不适用于局部变量黄油刀
- android - 如何检测创建通知的应用程序是否关闭了通知?
- php - 如何在 PHP 中添加 preg_match 空格?
- css - 过渡完成后开始关键帧动画 (CSS)
- r - 向ggplot点添加值
- c++ - cpp - 大数组按引用传递
- vb.net - rnd() 种子的内存位置
- java - 从 Java 中的 Scanner 获取值后,如何获取 java.util.InputMismatchException 错误?
- android - 任务 ':app:compileFlutterBuildDebug' 执行失败。SQFlite 数据库删除后
- r - 如何向 geom_col 添加额外的 x 和 y 轴?