【发布时间】:2016-03-25 07:13:24
【问题描述】:
let url = NSURL(string: "http://example.com")
据我了解,NSURL 在构造失败时返回nil。
如何获取失败错误信息?
【问题讨论】:
let url = NSURL(string: "http://example.com")
据我了解,NSURL 在构造失败时返回nil。
如何获取失败错误信息?
【问题讨论】:
据我所知,URL 失败的主要原因是 URL 字符无效。
你可以通过...解决这个问题
let theURLString = // your url string
let validURLString = theURLString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLPathAllowedCharacterSet())
let url = NSURL(string: validURLString)
如果没有看到您实际尝试使用的字符串,就很难判断问题出在哪里。
【讨论】:
很遗憾,NSURL 不会告诉你为什么 URL 创建失败。
在NSURL 上执行 ALT+CLICK 时从 Xcode 弹出窗口:
处理对象创建失败
如果传递的路径格式不正确,则 NSURL 类无法创建新的 NSURL 对象;路径必须符合 RFC 2396。不成功的例子是包含空格字符和高位字符的字符串。如果创建 NSURL 对象失败,创建方法返回 nil,你必须准备好处理。
所以如果失败,NSURL 只会返回 nil,而不提供任何进一步的细节。像往常一样使用 Optional binding、Optional chaining、guard 或任何其他已知技术来安全地解开 optionals,并遵循 Fogmeister 的建议并在使用前对 URL 字符串进行编码。
【讨论】:
用 Swift 5
更新了答案let theURLString = "URL" // your url string
let validURLString = theURLString.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)
let url = URL(string: validURLString)
【讨论】: