2016-05-17 59 views
1

我有一行代码直到2个月前才开始工作。现在我收到警告“模糊使用下标”。下标故障

这是我遇到麻烦的代码行。最近有没有更新Swift?

if let data = response.result.value { 

    let precinctNumberFromAPI = Int(data.valueForKeyPath("objects.metadata.Precinct")![0] as! String) 
.... 

} 

回答

3

随着Swift 2.2编译器对类型的要求更严格,如果存在歧义,许多以前推断的类型不再被推断。

就你而言,只需帮助编译器通过安全解开和转换来知道你的对象是什么类型。

例子:

if let data = response.result.value, 
     array = data.valueForKeyPath("objects.metadata.Precinct") as? [String], 
     precinctNumberFromAPI = array.first { 
    // do stuff with precinctNumberFromAPI 
} 
+1

谢谢!我想最好是更严格的这样的事情。 –