NSURL失败的初始化程序initWithString:在Swift中的空字符串上不返回nil

时间:2015-09-25 14:33:01

标签: swift nsurl

在游乐场中轻松复制

import Foundation

let urlString = ""

let url = NSURL(string: urlString)

print(url)

网址的结果是(no URL)而不是预期的nil 打印输出为Optional().Some.None

我真的很想对这一点有所了解,因为它让我感到意外并导致生产代码崩溃。

2 个答案:

答案 0 :(得分:3)

在我为此填充雷达后,我得到了以下答案:

  

Apple Developer Relations

     

空字符串是有效的URL字符串。它没有方案,没有权限(用户/密码/主机/端口),空路径,没有查询,没有片段。

所以它似乎按预期工作。

答案 1 :(得分:0)

找出答案的最佳方法是阅读文档

convenience init?(string URLString: String)
  

返回值

     

使用URLString初始化的NSURL对象。如果URL字符串格式错误,则返回nil。

     

<强>讨论

     

此方法要求URLString仅包含正确形成的URL中允许的字符。所有其他字符必须正确转义百分比。任何百分比转义字符都使用UTF-8编码进行解释。

所以你必须检查nil