看起来 String 类型不再提供 contentsOfURL 初始化程序(在 Xcode 7 更新之后)?
Posted
技术标签:
【中文标题】看起来 String 类型不再提供 contentsOfURL 初始化程序(在 Xcode 7 更新之后)?【英文标题】:Looks like the String type no longer provides contentsOfURL initializer anymore (after Xcode 7 update)? 【发布时间】:2015-09-28 16:25:31 【问题描述】:这在 Xcode 6 中有效,但在新更新中中断:
if var url = String(contentsOfURL: request.URL, encoding: NSUTF8StringEncoding, error: nil)
现在给我这个错误。找不到简单的修复方法(如果有的话):
“无法使用类型为 '(contentsOfURL: NSURL?, encoding: UInt, error: NilLiteralConvertible)' 的参数列表调用类型 'String' 的初始化程序
对如何进行这项工作有任何想法吗?
【问题讨论】:
【参考方案1】:在 Swift 2.0 中,错误已被删除,String
初始化程序现在抛出错误,必须使用 catch
捕获该错误。或者,您可以使用 try?
让它返回一个可选的 nil
是否有错误。
在 Swift 2.0 中,这也是一样的:
if var url = try? String(contentsOfURL: request.URL, encoding: NSUTF8StringEncoding)
try?
返回一个 String?
,可选绑定 if var
解包。
【讨论】:
很有趣,所以是错误参数导致了这个问题? (或者也许我的错误处理方法......)【参考方案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
【讨论】:
以上是关于看起来 String 类型不再提供 contentsOfURL 初始化程序(在 Xcode 7 更新之后)?的主要内容,如果未能解决你的问题,请参考以下文章
SharedPreferences的工具类,使用起来方便快捷