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 后台会话中的 NSURLSessionDownloadTask 给出错误
NSURLSession 间歇性 SSLHandshake failed (-9810) 错误
NSURLSession GET 请求:DidCompleteWithError - 错误为空
NSURLSession/NSURLConnection HTTP 加载失败 (kCFStreamErrorDomainSSL, -9802) 错误