推送视图控制器时应用程序崩溃,[NSConcreteData initWithContentsOfURL:options:error:]: nil URL argument'

Posted

技术标签:

【中文标题】推送视图控制器时应用程序崩溃,[NSConcreteData initWithContentsOfURL:options:error:]: nil URL argument\'【英文标题】:App crash when pushing view controller,[NSConcreteData initWithContentsOfURL:options:error:]: nil URL argument'推送视图控制器时应用程序崩溃,[NSConcreteData initWithContentsOfURL:options:error:]: nil URL argument' 【发布时间】:2013-09-11 05:32:30 【问题描述】:

我遇到错误

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[NSConcreteData initWithContentsOfURL:options:error:]: nil URL argument'`

当我尝试将 viewControllerViewControllerA 推送到 ViewControllerB 时,应用程序崩溃

下面是我在ViewControllerB中的代码,

dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//this will start the image loading in bg
dispatch_async(concurrentQueue, ^
    NSError *nserror = nil;
    NSData *imageData = [NSData dataWithContentsOfURL:url options:NSDataReadingUncached error:&nserror];
    //this will set the image when loading is finished
    dispatch_async(dispatch_get_main_queue(), ^
        if (nserror) 

            UIImage *image = [UIImage imageNamed:@"prod_img3.png"];
            pro_image.image = image;
        
        else
            UIImage *image = [UIImage imageWithData:imageData];
            pro_image.image = image;
        
        [self doneChecking];
    );
);

我做错了什么? 感谢您的帮助。

【问题讨论】:

错误提示您的 url 参数为 nil。尝试在将 url 参数传递给 dataWithContentsOfURL 之前打印它。 当然 url 是 nil...在使用之前记录它 我试过但没有解决。收到打印值 null。我可以忽略 URL 的 dataWithContents 吗? @GajendraKChauhan 不,你不能忽视。试试我下面答案中的代码。 【参考方案1】:
dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//this will start the image loading in bg
dispatch_async(concurrentQueue, ^
    NSError *nserror = nil;
    if(url.length == 0)
    
         UIImage *image = [UIImage imageNamed:@"prod_img3.png"];
         pro_image.image = image;
    
    else
    
           NSData *imageData = [NSData dataWithContentsOfURL:url options:NSDataReadingUncached error:&nserror];
           //this will set the image when loading is finished
           dispatch_async(dispatch_get_main_queue(), ^
           if (nserror) 

                 UIImage *image = [UIImage imageNamed:@"prod_img3.png"];
                 pro_image.image = image;
           
           else
                 UIImage *image = [UIImage imageWithData:imageData];
                 pro_image.image = image;
           
       
       [self doneChecking];
    );
);

【讨论】:

以上是关于推送视图控制器时应用程序崩溃,[NSConcreteData initWithContentsOfURL:options:error:]: nil URL argument'的主要内容,如果未能解决你的问题,请参考以下文章

iOS 应用程序在推送“动画”设置为“是”的视图控制器时崩溃,但在“动画”设置为“否”时工作正常

在 iOS 13 上推送新视图后后退按钮崩溃

推送新视图时 UINavigationItem TitleView 崩溃

pushviewcontroller 在分发构建时崩溃但不调试

当点击 FCM 推送通知时,如何在选项卡栏中打开特定的视图控制器?

推送视图控制器时发现线程错误为零