2016-07-04 61 views
1

我有超級簡單的代碼,從網上下載圖像。它在iOS 8中工作正常,但現在我一直在使用iOS 9在Xcode 7.3中收到此錯誤。這是一個錯誤嗎?錯誤Xcode 7.3與iOS 9.2 dataWithContentsOfURL

NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask ,YES); 
NSString* documentsPath = [paths objectAtIndex:0]; 

NSError *error; 
NSString *data2URL = @"http://cdn.minecraftpocket-servers.com/images/flags/Brazil.png"; 
NSURL *url = [NSURL URLWithString:data2URL]; 
NSString *imgFileNameStr = [data2URL lastPathComponent]; 

NSData *data2 = [NSData dataWithContentsOfURL:url options: NSDataReadingUncached error: &error]; 

if (error) 
    NSLog(@"Download error: %@",error); 

//check 
if (data2 == NULL) 
{ 
    NSLog(@"DATA IS NULL"); 
} 
else 
{ 
    NSLog(@"DATA IS NOT NULL"); 
} 

//saving file 
NSString* fullPathToFile2 = [documentsPath stringByAppendingPathComponent:imgFileNameStr]; 
BOOL success = [data2 writeToFile:fullPathToFile2 atomically:NO]; 
NSLog(@"Success = %d ...", success); 

錯誤:

2016-07-03 23:00:36.963 014-test-proj[15404:419151] Download error: Error Domain=NSCocoaErrorDomain Code=256 "The file 「Brazil.png」 couldn’t be opened." UserInfo={NSURL=http://cdn.minecraftpocket-servers.com/images/flags/Brazil.png} 
2016-07-03 23:00:36.963 014-test-proj[15404:419151] DATA IS NULL 
2016-07-03 23:00:36.964 014-test-proj[15404:419151] Success = 0 ... 

我已經檢查&確信應用程序安全我的plist文件的。

enter image description here

有人有同樣的問題HERE。我錯過了什麼?

更新:如果我用這個鏈接 代碼工作...

NSString *data2URL [email protected]"https://upload.wikimedia.org/wikipedia/commons/1/1e/Large_Siamese_cat_tosses_a_mouse.jpg"; 

我不明白這一點。爲什麼它會有另一個問題。

回答

1

你永遠不應該呼叫[NSData dataWithContentsOfURL:url]從遠程URL(即Internet上的某處)下載數據。你的代碼很糟糕,你正在做同步網絡,這總是錯誤的。現在你被運行時所阻止了,正確的是。要下載數據,請下載。使用NSURLSession。這就是它的目的。

+0

沒了,有沒有效果。我將代碼更改爲NSURLSession,它下載文件但無法打開。還有其他事情正在進行中。自己嘗試一下。 PS。查看更新的鏈接 –

+0

我注意到有一個重定向。這可能與它有關。 – matt

-1

區別在於使用安全URL的變化。 Apple已經推出了應用程序傳輸安全(ATS),現在您的應用程序中還有一個設置,您必須啓用它才能從不是http格式的URL加載。

以下添加到您的Info.plist禁用ATS

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