2015-10-31 83 views
1

我使用Twitters API來獲取用戶詳細信息,包括他們的個人資料圖像(TWTRUser.profileImageURL);它的工作原理,但我發現,配置文件圖像通常不加載。起初,我認爲它在iPhone上的結束時速度很慢/連接不好,但即使我看起來有很好的連接,它似乎也正在發生。我認爲這可能是Twitters結束時的一個快速暫停,但不能很好地診斷問題。Twitter profileImageURL間歇性不加載(iOS Swift)

我想通過核心數據緩存最後一個已知的圖像作爲解決方案,但在此之前,我想我會問我是否正確地做了一切/丟失了一些東西。這是我的Swift 2代碼:

import TwitterKit 

class Session: NSObject { 
    class var sharedInstance: Session { 
     struct Singleton { 
      static let instance = Session() 
     } 
     return Singleton.instance 
    } 

    var userId: String? 
    var userName: String? 
    var userScreenName: String? 
    var userImage: NSData? 

    override init() { 
     super.init() 
     self.loadTwitterAccountDetails() 
    } 

    func loadTwitterAccountDetails(){ 
     if let session = Twitter.sharedInstance().sessionStore.session() { 
      let client = TWTRAPIClient() 

      client.loadUserWithID(session.userID) { (user, error) -> Void in 
       if let user = user { 
        self.userId = "Twitter\(user.userID)" 
        self.userName = user.name 
        self.userScreenName = user.screenName 
        let userImageURL = NSURL(string: user.profileImageURL) 
        self.userImage = NSData(contentsOfURL: userImageURL!) 
       } 
      } 
     } 
    } 
} 

有什麼想法?任何人都遇到同樣的問題?

回答

1
func loadTwitterAccountDetails(){ 
     if let session = Twitter.sharedInstance().sessionStore.session() { 
      let client = TWTRAPIClient() 

      client.loadUserWithID(session.userID) { (user, error) -> Void in 
       if let user = user {[week self] 
        dispatch_async(dispatch_get_main_queue()) { 
          self.userId = "Twitter\(user.userID)" 
          self.userName = user.name 
          self.userScreenName = user.screenName 
          if let userImageURL = NSURL(string: user.profileImageURL) { 
           self.userImage = NSData(contentsOfURL: userImageURL) 
          } 
        } 
       } 
      } 
     } 
    }