看起来String类型不再提供contentsOfURL初始化器(在Xcode 7更新之后)?

时间:2015-09-28 16:25:31

标签: ios swift swift2 ios9

这在Xcode 6中有效,但在新的更新中打破了:

if var url = String(contentsOfURL: request.URL, encoding: NSUTF8StringEncoding, error: nil)

现在给我这个错误。无法找到一种简单的修复方法(如果有的话):

"无法为类型'字符串'调用初始化程序。使用类型'的参数列表(contentsOfURL:NSURL ?,编码:UInt,错误:NilLiteralConvertible)'

有关如何使这项工作的任何想法?

2 个答案:

答案 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
}