這是很容易在操場NSURL失敗能夠初始化器initWithString:斯威夫特
import Foundation
let urlString = ""
let url = NSURL(string: urlString)
print(url)
URL的結果是某種(no URL)
而不是預期的nil
和打印輸出是重現Optional()
既不與.Some
或.None
。
我真的很想知道這個問題,因爲它令我吃驚,並導致生產代碼崩潰。
這是很容易在操場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
它不返回零!這就是我的問題 –
所以你的意思是,在swift 3中返回空字符串的URL是值得雷達的,對嗎? –
哇,剛剛測試過,'let url = URL(string:「」)'和 'let nsurl = NSURL(string:「」)'有不同的結果 –
我知道,我的應用在我做迅速3遷移,我無法弄清楚爲什麼它在swift 2上工作後,它確實不應該的文件,所以我現在檢查空弦。 –