Невозможно отобразить данные json в текущем представлении - интеграция с LinkedIn iOS (Swift 4.2) - PullRequest
0 голосов
/ 23 февраля 2019

У меня проблема с получением содержимого переменной "firstName" для отображения в текущем представлении.

У меня есть сегментированный контроллер представления, который имеет две вкладки.Я хотел показать firstName на ярлыке «nameLabel», который является одним из основных представлений контейнера, используя фрагмент кода ниже.

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!            
})

Однако после выполнения этого кода метка остается пустой.Я экспериментировал с этим совсем безрезультатно.Но когда я заменил ярлык на ярлык из второго представления контейнера, когда я щелкну на этом представлении контейнера, на ярлыке будет показано содержимое, которое мне нужно!

Ваша помощь по этому вопросу будет высоко оценена !!

Спасибо,

1 Ответ

0 голосов
/ 24 февраля 2019

Попробуйте обновить nameLabel в главном потоке.Все обновления пользовательского интерфейса должны происходить там.

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

Или, возможно, это момент, когда nameLabel еще не существует.Поместите точку останова и посмотрите, не является ли это nil.

...