在初始化之前使用常量'XXX'

时间:2016-10-14 19:23:33

标签: swift

我是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)
         }

2 个答案:

答案 0 :(得分:1)

通过将parseResult声明为AnyObject可以很容易地解决这个问题吗?这意味着它将被初始化为零。打印将打印一个可选的值,它可以做得很好。

小心使用的单词。 “//抛出这条线的错误”完全是误导。此行没有抛出任何错误。在运行时抛出错误。您有编译器在此行报告错误。准确一点。

答案 1 :(得分:0)

当您获得代码时,parsedResult可能会在您到达print(parsedResult)语句时未初始化。

try语句引发错误时可能会出现这种情况。 parsedResult仍然未初始化,程序将继续catch阻止,打印“错误”,然后继续(尝试打印parsedResult)。

但是,如果您在return块中插入catch,则可确保在出现错误的情况下,您不会继续使用print(parsedResult)行。