Json 初始化前捕获变量,迁移到Swift 2后出错
在将代码迁移到swift 2之后,我遇到了一个问题(我对swift和iOS编程都是新手,所以这可能是一个愚蠢的错误) 由于Swift 2中的错误处理,我为数据检索添加了“do,try,catch”子句: 之前:Json 初始化前捕获变量,迁移到Swift 2后出错,json,initialization,migration,nsdictionary,swift2,Json,Initialization,Migration,Nsdictionary,Swift2,在将代码迁移到swift 2之后,我遇到了一个问题(我对swift和iOS编程都是新手,所以这可能是一个愚蠢的错误) 由于Swift 2中的错误处理,我为数据检索添加了“do,try,catch”子句: 之前: jsonData: NSDictionary = NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers) as? NSDictionary}
jsonData: NSDictionary = NSJSONSerialization.JSONObjectWithData(urlData!,
options:NSJSONReadingOptions.MutableContainers) as? NSDictionary}
之后:
do{
try jsonData = NSJSONSerialization.JSONObjectWithData(urlData!,
options:NSJSONReadingOptions.MutableContainers) as? NSDictionary}
catch let errorParsing as NSError
{errorParsing.description}
let success:NSInteger = jsonData!.valueForKey("success") as! NSInteger
但是现在每次我尝试访问jsonData对象(最后一行代码中的示例)时,我都会得到一个错误“变量在初始化之前被闭包捕获”
有人能告诉我如何解决这个问题吗?我尝试使用“init()”,但没有成功
提前感谢你的帮助
PS:我知道这里的其他一些人已经发布了一个关于相同错误的问题,但是没有一个包含我可以使用的信息/修复
Kr,在
do{}
中使用jsonData
do{
let try jsonData = NSJSONSerialization.JSONObjectWithData(urlData!,
options:NSJSONReadingOptions.MutableContainers) as? NSDictionary
}
let success:NSInteger = jsonData!.valueForKey("success") as! NSInteger
catch let errorParsing as NSError
{errorParsing.description}
现在不需要声明额外的NSError变量。您可以这样放置代码:
do{
try jsonData = NSJSONSerialization.JSONObjectWithData(urlData!,
options:NSJSONReadingOptions.MutableContainers) as? NSDictionary}
catch {
fatalError(error)
}
谢谢你的帮助!我从代码中删除了NSError变量。谢谢你的帮助!当我在try子句前面添加“let”时,仍然出现了一个错误,但我将do、try、catch更改为代码中的更高级别,现在它工作得很好。