下面的代碼如何檢查零內部擴展
extension String {
func isValidEmail() -> Bool {
if self == nil { return false }
給我的錯誤Value of type 'String' can never be nil, comparison isn't allowed
是否有可能以某種方式檢查零嗎?
下面的代碼如何檢查零內部擴展
extension String {
func isValidEmail() -> Bool {
if self == nil { return false }
給我的錯誤Value of type 'String' can never be nil, comparison isn't allowed
是否有可能以某種方式檢查零嗎?
檢查nil
不是必需的。
該函數是String
上的一個實例函數。
它只能運行在String
的實例上。
其次Swift沒有類似於Objective-C的「零消息傳遞」,因此該函數在HAS上調用的字符串實例不爲零。即使在Objective-C中,這仍然無關緊要,因爲如果調用一個零字符串,該函數將不會運行。
所以,該消息是正確的,Value of type "String" can never be nil
。
回想一下,在夫特,String
類型的值可以從未是nil
;如果你想要一個可以清零的值,你必須聲明它String?
。
所以不行,沒有辦法檢查String
變量是否設置爲nil
,,因爲它不能。
你可以檢查你的字符串是空的,因爲:
var myString : String?
if myString.isEmpty {
// do whatever you want ..
}
這是具有更多的意義..
這是沒有意義的。你不能在'nil'字符串上調用該方法。 –
啊,當然!正如@Fogmeister指出的那樣,Swift沒有「無消息」。 –
即使在Objective-C中,'self'也不能在方法內部爲'nil'。 「無消息」意味着消息被丟棄*如果接收者爲「無」。 - Swift中類似的機制是可選的鏈接:'someOptionalString?.isValidEmail()'。 –