【问题标题】:How to get an error info after NSURL constructor returns nil?NSURL 构造函数返回 nil 后如何获取错误信息?
【发布时间】:2016-03-25 07:13:24
【问题描述】:
let url = NSURL(string: "http://example.com")

据我了解,NSURL 在构造失败时返回nil

如何获取失败错误信息?

【问题讨论】:

    标签: swift nsurl


    【解决方案1】:

    据我所知,URL 失败的主要原因是 URL 字符无效。

    你可以通过...解决这个问题

    let theURLString = // your url string
    
    let validURLString = theURLString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLPathAllowedCharacterSet())
    
    let url = NSURL(string: validURLString)
    

    如果没有看到您实际尝试使用的字符串,就很难判断问题出在哪里。

    【讨论】:

      【解决方案2】:

      很遗憾,NSURL 不会告诉你为什么 URL 创建失败。

      NSURL 上执行 ALT+CLICK 时从 Xcode 弹出窗口:

      处理对象创建失败
      如果传递的路径格式不正确,则 NSURL 类无法创建新的 NSURL 对象;路径必须符合 RFC 2396。不成功的例子是包含空格字符和高位字符的字符串。如果创建 NSURL 对象失败,创建方法返回 nil,你必须准备好处理。

      所以如果失败,NSURL 只会返回 nil,而不提供任何进一步的细节。像往常一样使用 Optional binding、Optional chaining、guard 或任何其他已知技术来安全地解开 optionals,并遵循 Fogmeister 的建议并在使用前对 URL 字符串进行编码。

      【讨论】:

        【解决方案3】:

        Swift 5

        更新了答案
        let theURLString = "URL" // your url string
        
        let validURLString = theURLString.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)
        
        let url = URL(string: validURLString)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-07-30
          • 2018-01-20
          • 1970-01-01
          • 2014-07-25
          • 2011-04-07
          • 1970-01-01
          • 2010-11-26
          • 1970-01-01
          相关资源
          最近更新 更多