NSURL失败能够初始化器initWithString:斯威夫特
问题描述:
对空字符串不回零
这是很容易在操场NSURL失败能够初始化器initWithString:斯威夫特
import Foundation
let urlString = ""
let url = NSURL(string: urlString)
print(url)
URL的结果是某种(no URL)
而不是预期的nil
和打印输出是重现Optional()
既不与.Some
或.None
。
我真的很想知道这个问题,因为它令我吃惊,并导致生产代码崩溃。
答
后,我充满了这样的雷达,我得到了以下的答案:
苹果开发者关系
空字符串是一个有效的URL串。它没有方案,没有权限(用户/密码/主机/端口),空路径,没有查询和片段。
所以它似乎按预期工作。
答
,找出最好的办法是阅读的文档
convenience init?(string URLString: String)
返回值
与URLString初始化的NSURL对象。如果URL字符串格式不正确,则返回nil。
讨论
这个方法只需要URLString为仅包含允许在一个适当的URL形成字符。所有其他角色必须正确逃脱百分比。任何转义百分比的字符都使用UTF-8编码进行解释。
所以,你必须检查nil
+0
它不返回零!这就是我的问题 –
所以你的意思是,在swift 3中返回空字符串的URL是值得雷达的,对吗? –
哇,刚刚测试过,'let url = URL(string:“”)'和 'let nsurl = NSURL(string:“”)'有不同的结果 –
我知道,我的应用在我做迅速3迁移,我无法弄清楚为什么它在swift 2上工作后,它确实不应该的文件,所以我现在检查空弦。 –