簡體   English   中英

NSURLErrorDomain的代碼= -1100

[英]NSURLErrorDomain with code=-1100

我試圖將圖片從下載到我的應用中

在此處輸入圖片說明 請求失敗,錯誤為NSURLErrorDomain,代碼實際上為-1100。 該網址應該正確,因為我在瀏覽器中檢查了該網址。 有人知道為什么嗎?

let userImageURL: String! = "http://i.imgur.com/QhCzQoR.jpg";
let url = NSURL(fileURLWithPath: userImageURL);
let request:NSURLRequest = NSURLRequest(URL: url!)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler: { (response:NSURLResponse!, imageData:NSData!, error:NSError!) -> Void in
                let image = UIImage(data: imageData!);
 })

您收到此問題的原因是因為您使用過

let url = NSURL(fileURLWithPath: userImageURL);

相反,您應該使用:

let url = NSURL(string: userImageUrl)

我用Objective-C編寫代碼,應該很容易在Swift中進行轉換(實際上是很小的修改,但是解釋與代碼並沒有太大關系)。 如果檢查錯誤完成消息,您將得到:

錯誤域= NSURLErrorDomain代碼= -1100“在此服務器上找不到請求的URL。” UserInfo = 0x7997b7e0 {NSErrorFailingURLStringKey = file:/// http:/i.imgur.com/QhCzQoR.jpg,NSErrorFailingURLKey = file:/// http:/i.imgur.com/QhCzQoR.jpg,NSLocalizedDescription =請求的URL是在此服務器上找不到。,NSUnderlyingError = 0xx7f3080“在此服務器上找不到請求的URL。”}

顯然,如果您仔細查看URL,則有file:///http:/i.imgur.com/QhCzQoR.jpg ,這不是所需的URL。 如果您登錄url.absoluteString ,則會在URL中看到它,是這樣設置的。

為什么? 因為您使用的是fileURLWithPath:而不是URLWithString: fileURLWithPath: 因此,請更改您的行:

let url = NSURL(URLWithString: userImageURL);

關於這兩者之間的區別的一些討論: NSURL的URLWithString和fileURLWithPath之間有什么區別? doc

更新:在Swift 4中:

let url = URL(string: userImageURL)

我們還建議Swift3 +在存在Swift等效項時避免使用NSStuff: NSURL => URL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM