2015-09-19 38 views
1

在這裏還有其他的「NSData contentsOfURL返回nil」的帖子,但沒有解決我的問題。NSData contentsOfURL返回nil,即使url有效swift 2.0

我試圖通過他們的APIv3從YouTube獲取個人資料圖片。

//To get the images URL if hover over defaultProfileImageURL it shows it has a significant number of bytes not nil. 

    let defaultProfileImageURL = NSURL(string: "https://i.ytimg.com/i/cRfrPfLqP5kjfEcoNwC7_A/1.jpg")! 

     //however defaultProfileImageData is nil even though defaultProfileImageURL has data when converted to NSData. 

    let defaultProfileImageData = NSData(contentsOfURL: defaultProfileImageURL) 

    let defaultProfileImage = UIImage(data: defaultProfileImageData!) 

它爲什麼說不應該是零?

+0

圖像鏈接不起作用 – Nishant

+0

是的。我剛剛檢查了 – RyanTCB

回答

0

有很多可能的原因。首先,NSData類沒有這樣的類方法。 NSDictionary在Swift中有這個方法,但不是NSData。據我所知,沒有便捷的快速類方法。你需要創建和初始化一個NSData對象。

init(contentsOfURL url: NSURL, 
      options readOptionsMask: NSDataReadingOptions) throws 

似乎是最好的選擇。你可以檢查拋出什麼錯誤。

0

試試這個:

let urlString = "http://herbadmother.com/wp-content/themes/thesis_18/custom/rotator/sample-1.jpg" 
let imgURL: NSURL = NSURL(string: urlString)! 
     let request: NSURLRequest = NSURLRequest(URL: imgURL) 

     let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { (data, response, error) -> Void in 
      let defaultProfileImageData = NSData(data: data!) 

      let defaultProfileImage = UIImage(data: defaultProfileImageData) 

      // Do something with your image like: self.imageView.image = defaultProfileImage 
     } 
     task.resume() 

運行代碼之前,第一<dict>後,將其添加到剛(因爲在iOS9蘋果的保密措施):

<key>NSAppTransportSecurity</key> 
    <dict> 
     <key>NSExceptionDomains</key> 
     <dict> 
      <key>herbadmother.com</key> 
      <dict> 
       <key>NSExceptionAllowsInsecureHTTPLoads</key> 
       <true/> 
       <key>NSExceptionMinimumTLSVersion</key> 
       <string>TLSv1.1</string> 
       <key>NSIncludesSubdomains</key> 
       <true/> 
      </dict> 
     </dict> 
    </dict> 

變化herbadmother.com與您的域名。

+0

只需等待幾秒鐘即可加載數據。 – Maysam