2015-09-25 35 views
1
对空字符串不回零

这是很容易在操场NSURL失败能够初始化器initWithString:斯威夫特

import Foundation 

let urlString = "" 

let url = NSURL(string: urlString) 

print(url) 

URL的结果是某种(no URL)而不是预期的nil 和打印输出是重现Optional()既不与.Some.None

我真的很想知道这个问题,因为它令我吃惊,并导致生产代码崩溃。

回答

3

后,我充满了这样的雷达,我得到了以下的答案:

苹果开发者关系

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

所以它似乎按预期工作。

+0

所以你的意思是,在swift 3中返回空字符串的URL是值得雷达的,对吗? –

+0

哇,刚刚测试过,'let url = URL(string:“”)'和 'let nsurl = NSURL(string:“”)'有不同的结果 –

+0

我知道,我的应用在我做迅速3迁移,我无法弄清楚为什么它在swift 2上工作后,它确实不应该的文件,所以我现在检查空弦。 –

0

,找出最好的办法是阅读的文档

convenience init?(string URLString: String) 

返回值

与URLString初始化的NSURL对象。如果URL字符串格式不正确,则返回nil。

讨论

这个方法只需要URLString为仅包含允许在一个适当的URL形成字符。所有其他角色必须正确逃脱百分比。任何转义百分比的字符都使用UTF-8编码进行解释。

所以,你必须检查nil

+0

它不返回零!这就是我的问题 –

相关问题