我正在将我的代码迁移到Swift 3,并在我的do/try/catch块中看到一堆相同的警告。我想检查一个赋值操作是否返回nil,如果没有工作,则将一些内容打印到控制台。catch块显示它“无法访问,因为在'do'块中没有抛出错误”。我希望使用一个catch块捕获所有错误。
let xmlString: String?
do{
//Warning for line below: "no calls to throwing function occurs within 'try' expression
try xmlString = String(contentsOfURL: accessURL, encoding: String.Encoding.utf8)
var xmlDict = XMLDictionaryParser.sharedInstance().dictionary(with: xmlString)
if let models = xmlDict?["Cygnet"] {
self.cygnets = models as! NSArray
}
//Warning for line below: "catch block is unreachable because no errors are thrown in 'do' block
} catch {
print("error getting xml string")
}
我该如何编写一个适当的try catch块以处理赋值错误?
try
必须写在抛出方法之前,而不是在包含结果的变量之前 -xmlString = try String(...
但是这个方法在 Swift 3 中真的会 抛出 错误吗? - vadiando - catch
块需要至少一个抛出错误的方法。String(contentsOfURL:
似乎没有这样做。顺便说一下:我怀疑String(contentsOfURL:
在 Swift 3 中是否能编译。 - vadianxmlString = String(contentsOf: url, encoding: String.Encoding.utf8)
来解析XML字符串。 - Willjay