当前位置: 首页 > 面试题库 >

Swift 2 iOS 9赶上尝试崩溃与意外的零

松飞翮
2023-03-14
问题内容

我正在尝试熟悉do catchSwift 2和iOS 9 的新声明

我的问题是,当NSURLSession发生错误时,data参数返回nil,而错误返回某些信息。在iOS
8中,这是预期的功能,我们只使用了if语句来查找Data是否为nil。

但是do catch,有了try,我想到了一个new
关键字,它旨在查看是否可以正常工作,如果不能正常工作,则默认为所编写的任何代码catch

但是,由于数据为零,所以我遇到了意外崩溃。这是预期的功能吗,为什么catch在我的try方法失败时不被调用?

我正在使用NSURLSession从API中提取数据。

我创建一个dataTaskWith请求,如下所示:

 let task = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
        print(request)
        print(response)
        print(error)

        do {

            let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary

因为数据而在此处崩溃!为零..因为存在NSURLSession错误

            print(jsonResult)




        } catch {
            print(error)
        }

    })
    task.resume()

问题答案:

这是因为catch仅捕获函数“抛出”的内容。

NSJSONSerialization 抛出,但是强制展开一个空的Optional却没有,它总是崩溃。

使用if let或新guard功能安全地解开您的价值观。

do {
    if let myData = data, let jsonResult = try NSJSONSerialization.JSONObjectWithData(myData, options: []) as? NSDictionary {
        print(jsonResult)
    }
} catch {
    print(error)
}


 类似资料:
  • 问题内容: 我正在为已经存在很长时间的应用程序编写单元测试。我需要测试的一些方法是这样构建的: 如果要测试这些方法,则必须在单元测试中编写如下代码: 这样做是一种好习惯吗?还是有其他方法可以测试这些方法? 我在Internet上进行了一些研究,发现了一些带有和的注释解决方案,但这是行不通的(Eclipse不断在测试中显示错误行)。我不知道这些是否是好的解决方案,因为对于整个单元测试而言,我还是一个

  • 问题内容: 我听到这样的观点,您应该完全避免使用try / catch,因为它占用很多资源。那么诺言错误处理会更快吗?还是没关系? UPD :我知道try / catch在内部的异步代码中不起作用。我只是在想是否由于性能问题而有任何避免使用try / catch的理由?以上两种方法之间有什么区别吗? UPD2 :试着跑我的马:) https://jsperf.com/try-catch-vs- p

  • Android应用程序初学者有一些问题,应用程序无法打开。今晚才开始用它工作。eclipse中的代码上没有显示错误。就在我试图从模拟器运行它时,它意外地关闭了。 主要来源:包装com.example.solidshellsecurity; XML: 错误日志:

  • 我很难在Android Studio中运行仪器化测试。 当我尝试运行多个测试用例时,会出现“测试框架意外退出”: ...所有的测试都继续在模拟器中运行,但Android Studio没有得到结果。 我的测试依赖项: 我发现很少有人提到“测试框架意外退出”和“此进程的传出事务必须是flag_oneway”来禁用Android Studio中的即时运行,但自从3.5没有即时运行以来,它被重命名以应用代

  • 问题内容: 我试图弄乱新的RecyclerView,每当我尝试运行它时,我的应用程序立即崩溃。它为我提供了NullPointerException,用于尝试从中访问方法。我查看了其他帖子,发现大多数人都没有,但是我尝试了一下,但完全没有帮助。目前还不确定要怎么做,我们将不胜感激。这里是错误日志:(我会发布图片,但我还没有10位代表) 问题答案: 当没有提供时,通常会发生此问题。您可以这样做:

  • 当我运行应用程序时,它工作得很好,但是当我想调试一个变量值时,应用程序就崩溃了。下面是完整的调试日志。我不知道是什么错误来纠正它。你们能帮帮我吗?我读到了一些关于并且我禁用和启用了ADB集成,但没有帮助我。我试图清洁,重建和运行的项目再次和没有帮助我。每次我尝试开始调试时,应用程序都会崩溃。 提前谢谢!!