2015-09-25 76 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

它不返回零!這就是我的問題 –