gpt4 book ai didi

swift 做 try catch 不工作

转载 作者:行者123 更新时间:2023-11-28 12:43:20 25 4
gpt4 key购买 nike

我正在尝试像这样做,尝试,捕捉:

do {
setQA = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as! [AnyObject]
print(setQA)
}
catch _ {
setQA = nil
self.customAlert("Error")
}

我正在尝试调用一个方法来使用 UIAlertController,但它从未到达它。

这甚至无法通过尝试,我的应用程序因以下错误而崩溃:

Could not cast value of type '__NSCFDictionary' (0x1a1773968) to 'NSArray'

这是一个预期的错误,有时会在用户数据挂起时发生,我只是不想让我的应用程序崩溃,只是显示警报

最佳答案

实际上这是来自您的这部分代码:

JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as! [AnyObject]

你可以做的是这样的事情:

  1. 首先检查你是否真的从你的服务器收到了一些数据:
  2. 检查这些数据的格式。您的代码崩溃是因为它试图将您的 JSON 解析为错误的格式(此处为对象数组),因此请尝试涵盖所有可能的情况。

结果代码应该是这样的:

    if let realData = data as? Data{

do {
if let setQA = try NSJSONSerialization.JSONObjectWithData( realData, options: NSJSONReadingOptions.AllowFragments) as? [AnyObject] {
//Check if the result is an Array
print(setQA)
}else if setQA = try NSJSONSerialization.JSONObjectWithData( realData, options: NSJSONReadingOptions.AllowFragments) as? [String : AnyObject] {
//Check if the result is a dictionnary
}
}
catch _ {
setQA = nil
self.customAlert("Error")
}

}else{
//Check if you have at least some data
self.customAlert("No data from server :(")
}
}

一般来说,尽量避免使用! ;)

关于swift 做 try catch 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38863098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com