看起来 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的工具类,使用起来方便快捷

js 怎么把blob类型转化为string

前台传数组 当数组只有一个值时,就变成了string类型,不再是数组了,这个怎么处理呢

将content:// uri转换为文件路径

Solr 控制台实现数据的增删改查

drf请求与响应