我是swift的新人..任何人都帮我理解为什么这个错误抛出
在初始化之前使用常量'parsedResult'
另一方面,如果我在return
中设置catch
,那么编译错误就会消失。彼此的关系是什么。请解释一下。
这是我的代码:
if let data = data {
let parsedResult : AnyObject!
do {
parsedResult = try NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments)
}
catch{
print("something worng ")
// return
}
// error compiler error this line
print(parsedResult)
}
答案 0 :(得分:1)
通过将parseResult声明为AnyObject可以很容易地解决这个问题吗?这意味着它将被初始化为零。打印将打印一个可选的值,它可以做得很好。
小心使用的单词。 “//抛出这条线的错误”完全是误导。此行没有抛出任何错误。在运行时抛出错误。您有编译器在此行报告错误。准确一点。
答案 1 :(得分:0)
当您获得代码时,parsedResult
可能会在您到达print(parsedResult)
语句时未初始化。
当try
语句引发错误时可能会出现这种情况。 parsedResult
仍然未初始化,程序将继续catch
阻止,打印“错误”,然后继续(尝试打印parsedResult
)。
但是,如果您在return
块中插入catch
,则可确保在出现错误的情况下,您不会继续使用print(parsedResult)
行。