这在Xcode 6中有效,但在新的更新中打破了:
if var url = String(contentsOfURL: request.URL, encoding: NSUTF8StringEncoding, error: nil)
现在给我这个错误。无法找到一种简单的修复方法(如果有的话):
"无法为类型'字符串'调用初始化程序。使用类型'的参数列表(contentsOfURL:NSURL ?,编码:UInt,错误:NilLiteralConvertible)'
有关如何使这项工作的任何想法?
答案 0 :(得分:4)
在Swift 2.0中,错误已被删除,String
初始化程序现在抛出错误,必须使用catch
捕获。或者,您可以使用try?
让它返回nil
选项,如果有错误。
在Swift 2.0中,这也是如此:
if var url = try? String(contentsOfURL: request.URL, encoding: NSUTF8StringEncoding)
try?
会返回String?
,其中可选绑定if var
会展开。
答案 1 :(得分:2)
这是因为Swift 2.0有全新的错误处理。
你可以这样做:
if let urlContent = try? String(contentsOfURL: url, encoding: NSUTF8StringEncoding) {
// ...
}
或者如果你想抛出自定义错误:
guard let urlContent = try String(contentsOfURL: url, encoding: NSUTF8StringEncoding) {
throw CustomError.CanNotLoadContentsOfURL
}
其中CustomError
是:
enum CustomError: ErrorType {
case CanNotLoadContentsOfURL
}