Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有iOS 9.2 dataWithContentsOfURL的错误Xcode 7.3_Ios_Objective C_Xcode - Fatal编程技术网

带有iOS 9.2 dataWithContentsOfURL的错误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

我有一个超级简单的代码,可以从网上下载图像。它在iOS 8中运行得很好,但现在我在iOS 9的Xcode 7.3中不断遇到这个错误。这是虫子吗

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,注意有一个重定向。这可能与此有关。