NSURLSession 错误域 = NSPOSIXErrorDomain 代码 = 2 “没有这样的文件或目录”

Posted

技术标签:

【中文标题】NSURLSession 错误域 = NSPOSIXErrorDomain 代码 = 2 “没有这样的文件或目录”【英文标题】:NSURLSession Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory" 【发布时间】:2017-10-10 13:27:05 【问题描述】:

我正在使用 NSURLSession 后台会话配置在后台下载文件。

- (void)initBackgroundSession 

    self.backgroundSessionManager = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:IELBackgroundSesssionCourseDownload] delegate:self delegateQueue:[NSOperationQueue mainQueue]];

    [self updateCurrentDownloadingCourse];
    self.isSuspendcourseDownloadTask = false;


- (void)updateCurrentDownloadingCourse 

[_backgroundSessionManager getTasksWithCompletionHandler:^(NSArray<NSURLSessionDataTask *> * _Nonnull dataTasks, NSArray<NSURLSessionUploadTask *> * _Nonnull uploadTasks, NSArray<NSURLSessionDownloadTask *> * _Nonnull downloadTasks) 

    NSLog(@"Count of DownloadTask %lu",(unsigned long)downloadTasks.count);
    for (NSURLSessionDownloadTask *downloadTask in downloadTasks) 

            NSDictionary *customDescription = [downloadTask getCustomTaskDescription];
            NSString *courseId = customDescription[IELCourseJSONKeyCoureID];
            if (courseId) 

                [self setDownloadingCourse_id:courseId];
                [self setCourseDownloadTask:downloadTask];
                break;
            

            [downloadTask resume];
    
];

现在的问题是,如果正在下载,我通过按两次主页按钮从后台关闭应用程序。然后,如果我重新打开应用程序。然后所有下载开始失败,并给出以下错误消息。如果我在 NSURLSession 对象中重新添加下载任务,那么它会失败,直到我从后台关闭应用程序并重新打开应用程序。

- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error 


Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory" UserInfo=NSErrorFailingURLKey=https://ilmsdevqa.inspiredlms.com/Content/Organizations/1544/ScormCourses/offline/2970-offline.zip, NSErrorFailingURLStringKey=https://ilmsdevqa.inspiredlms.com/Content/Organizations/1544/ScormCourses/offline/2970-offline.zip

【问题讨论】:

面临同样的问题 我也面临同样的情况,成功了吗? 我没有找到任何解决这个问题的方法。但是这个问题主要发生在我附加调试器时。 我也面临类似的问题:( 【参考方案1】:

如果您强制退出应用程序,所有后台下载都将被取消并生成此错误。它在文档中。

(猜这就是“我通过按两次主页按钮从后台关闭应用程序”的意思)

【讨论】:

问题是在下次启动应用程序时不允许再次开始下载,并且每次下一次下载都会失败并出现相同的错误。 在下一次启动时,您会收到通过强制退出取消下载的错误 - 所以这不是错误。但它应该允许你开始新的。在您尝试重用失败任务的代码中,这可能是错误。【参考方案2】:

我遇到了类似的问题,但不完全相同,但通过 Google 搜索找到了这个问题 - 这是错误代码和一个解决方案。

Error Domain=NSCocoaErrorDomain Code=260 "The file “PlugIns” couldn’t be opened because there is no such file." ...  NSUnderlyingError= ... Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"

修复:使用 Apple 开发者 ID 为应用签名 - https://developer.apple.com/developer-id/

黑客修复:

sudo spctl --master-disable

【讨论】:

【参考方案3】:

在我的情况下,当我更改连接的设备并在另一部 iPhone 上通过 Xcode 运行应用程序时,出现了同样的错误。退出 Xcode 并再次打开解决了这个问题,应用现在可以在新设备上正常运行。

【讨论】:

以上是关于NSURLSession 错误域 = NSPOSIXErrorDomain 代码 = 2 “没有这样的文件或目录”的主要内容,如果未能解决你的问题,请参考以下文章

NSURLSession错误处理

NSURLSession 后台会话中的 NSURLSessionDownloadTask 给出错误

NSURLSession 间歇性 SSLHandshake failed (-9810) 错误

NSURLSession GET 请求:DidCompleteWithError - 错误为空

NSURLSession/NSURLConnection HTTP 加载失败 (kCFStreamErrorDomainSSL, -9802) 错误

NSURLSession 通过 httpproxy 和 /etc/hosts 时出现 -1001 错误