带有iOS 9.2 dataWithContentsOfURL的错误Xcode 7.3
我有一个超级简单的代码,可以从网上下载图像。它在iOS 8中运行得很好,但现在我在iOS 9的Xcode 7.3中不断遇到这个错误。这是虫子吗带有iOS 9.2 dataWithContentsOfURL的错误Xcode 7.3,ios,objective-c,xcode,Ios,Objective C,Xcode,我有一个超级简单的代码,可以从网上下载图像。它在iOS 8中运行得很好,但现在我在iOS 9的Xcode 7.3中不断遇到这个错误。这是虫子吗 NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask ,YES); NSString* documentsPath = [paths objectAtIndex:0]; NSError *error; NSString *da
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文件的应用程序安全性
有人也有同样的问题。我错过了什么
更新:
如果我使用此链接,代码将起作用
NSString *data2URL =@"https://upload.wikimedia.org/wikipedia/commons/1/1e/Large_Siamese_cat_tosses_a_mouse.jpg";
我不明白。为什么它会与另一个有问题。您不应该调用
[NSData dataWithContentsOfURL:url]
从远程url(即Internet上的某个地方)下载数据。你的代码是skanky,你在做同步网络,这总是错误的。现在运行时阻止了您,这是正确的。要下载数据,请下载它。使用NSURLSession。这就是它的用途。您不应该调用[NSData data WITH CONTENTS OFURL:url]
从远程url(即Internet上的某个地方)下载数据。你的代码是skanky,你在做同步网络,这总是错误的。现在运行时阻止了您,这是正确的。要下载数据,请下载它。使用NSURLSession。这就是它的目的。区别在于使用安全URL的变化。苹果已经引入了应用程序传输安全(ATS),现在你的应用程序列表中有一个设置,你必须启用它才能从非http so形式的URL加载
将以下内容添加到Info.plist以禁用ATS
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key><true/>
</dict>
NSAppTransportSecurity
NSAllowsArbitraryLoads
不同之处在于对使用安全URL的更改。苹果已经引入了应用程序传输安全(ATS),现在你的应用程序列表中有一个设置,你必须启用它才能从非http so形式的URL加载
将以下内容添加到Info.plist以禁用ATS
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key><true/>
</dict>
NSAppTransportSecurity
NSAllowsArbitraryLoads
不,没有效果。我将代码更改为NSURLSession,它下载文件但无法打开。这件事还有别的原因。你自己试试看。注:见更新的linkI,注意有一个重定向。这可能与此有关。不,那没有效果。我将代码更改为NSURLSession,它下载文件但无法打开。这件事还有别的原因。你自己试试看。注:见更新的linkI,注意有一个重定向。这可能与此有关。