Ios 字符串类型似乎不再提供contentsOfURL初始值设定项(在Xcode 7更新之后)?

Ios 字符串类型似乎不再提供contentsOfURL初始值设定项(在Xcode 7更新之后)?,ios,swift,swift2,ios9,Ios,Swift,Swift2,Ios9,这在Xcode 6中有效,但在新的更新中中断: if var url = String(contentsOfURL: request.URL, encoding: NSUTF8StringEncoding, error: nil) 现在给我这个错误。难以找到简单的修复方法(如果有): 无法使用类型为“(contentsOfURL:NSURL?,编码:UInt,错误:nilliteralconverable)”的参数列表调用类型“String”的初始值设定项 关于如何实现这一点有什么想法吗?这是

这在Xcode 6中有效,但在新的更新中中断:

if var url = String(contentsOfURL: request.URL, encoding: NSUTF8StringEncoding, error: nil)
现在给我这个错误。难以找到简单的修复方法(如果有):

无法使用类型为“(contentsOfURL:NSURL?,编码:UInt,错误:nilliteralconverable)”的参数列表调用类型“String”的初始值设定项


关于如何实现这一点有什么想法吗?

这是因为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
}

这是因为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
}

在Swift 2.0中,错误已被删除,
字符串
初始值设定项现在抛出错误,必须使用
catch
捕获该错误。或者,您可以使用
try?
使其返回一个可选值,即
nil
。如果存在错误,则返回该值

在Swift 2.0中,这与:

if var url = try? String(contentsOfURL: request.URL, encoding: NSUTF8StringEncoding)

try?
返回一个
String?
,可选绑定
如果var
打开该字符串。

在Swift 2.0中,错误已被删除,
String
初始值设定项现在抛出错误,必须使用
catch
捕获该错误。或者,您可以使用
try?
使其返回一个可选的字符串
nil
是否存在错误

在Swift 2.0中,这与:

if var url = try? String(contentsOfURL: request.URL, encoding: NSUTF8StringEncoding)

try?
返回一个
String?
,如果var打开,则可选绑定
会打开该字符串。

很有趣,因此导致问题的是错误参数(或者可能是我处理错误的方法…)很有趣,所以导致问题的是错误参数?(或者我的错误处理方法…)