2015-09-14 16 views
5

Tôi đã tìm thấy một số câu hỏi tương tự trên StackOverflow nhưng không có câu hỏi nào trong số chúng giải quyết được sự cố của tôi.Nội dung NSDataOfUrl trả lại nil

Tôi đang cố gắng tải hình ảnh từ url. Đây là cách tôi làm điều đó:

let url = NSURL(string: "http://pic3.zhimg.com/8161ba9638273e0fb1a0201789d22d8e_m.jpg") 
let data = NSData(contentsOfURL: url!) 
let image = UIImage(data: data!) 

Nhưng tôi đã nhận ra lỗi nói với tôi rằng data là con số không.

Tôi làm cách nào để giải quyết vấn đề này? Cảm ơn.

CẬP NHẬT

Dưới đây là một số ảnh chụp màn hình của lỗi:

enter image description here enter image description here

+0

Mã của bạn được hoàn toàn làm việc. Tôi nghĩ rằng bạn đang nhận được dữ liệu nil vì một số vấn đề mạng/hạn chế. Tôi đã kiểm tra cùng một mã trong sân chơi của tôi và tôi nhận được kết quả. –

+0

@MidhunMP Tôi đã thử nó ở sân chơi và nó hoạt động. Nhưng khi tôi chạy nó trong 'viewDidLoad' của một dự án mới được tạo, tôi đã gặp lỗi tương tự –

+0

Hãy thử với' NSData (contentsOfURL: option: error) '. Bạn có thể gặp lỗi. Điều này có thể liên quan đến sự vắng mặt của "https" với iOS9 (và Bảo mật Giao thông Ứng dụng được thiết lập) không? – Larme

Trả lời

13

Đây có thể là kết quả bảo mật giao thông ứng dụng mới của Apple từ chối yêu cầu không phải HTTPS. Để giải quyết vấn đề này, bạn cần sửa đổi tệp Info.plist của ứng dụng. Bạn có thể xác định một ngoại lệ cho rằng tên miền cụ thể

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSExceptionDomains</key> 
    <dict> 
     <key>pic3.zhimg.com</key> 
     <dict> 
      <key>NSIncludesSubdomains</key> 
      <true/> 
      <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> 
      <true/> 
     </dict> 
    </dict> 
</dict> 

hoặc vô hiệu hóa ATS tốt hoàn toàn

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
</dict> 
+0

Trang này có một hình ảnh hữu ích: http://stackoverflow.com/a/33712228/1711103 –

3

Tôi nghĩ bạn nên, trước khi tất cả, tạo ra một mã số đàn hồi.

if let url = NSURL(string: "http://pic3.zhimg.com/8161ba9638273e0fb1a0201789d22d8e_m.jpg") 
{ 
    if let data = NSData(contentsOfURL: url) 
    { 
     if let image = UIImage(data: data) 
     { 
      //Do something 
     } 
    } 
} 
Các vấn đề liên quan