2017-01-12 37 views
1

下面的代碼如何檢查零內部擴展

extension String { 

    func isValidEmail() -> Bool { 
     if self == nil { return false } 

給我的錯誤Value of type 'String' can never be nil, comparison isn't allowed

是否有可能以某種方式檢查零嗎?

+5

這是沒有意義的。你不能在'nil'字符串上調用該方法。 –

+0

啊,當然!正如@Fogmeister指出的那樣,Swift沒有「無消息」。 –

+1

即使在Objective-C中,'self'也不能在方法內部爲'nil'。 「無消息」意味着消息被丟棄*如果接收者爲「無」。 - Swift中類似的機制是可選的鏈接:'someOptionalString?.isValidEmail()'。 –

回答

5

檢查nil不是必需的。

該函數是String上的一個實例函數。

它只能運行在String的實例上。

其次Swift沒有類似於Objective-C的「零消息傳遞」,因此該函數在HAS上調用的字符串實例不爲零。即使在Objective-C中,這仍然無關緊要,因爲如果調用一個零字符串,該函數將不會運行。

所以,該消息是正確的,Value of type "String" can never be nil

0

回想一下,在夫特,String類型的值可以從未nil;如果你想要一個可以清零的值,你必須聲明它String?

所以不行,沒有辦法檢查String變量是否設置爲nil,,因爲它不能

1

你可以檢查你的字符串是空的,因爲:

var myString : String? 

if myString.isEmpty { 
    // do whatever you want .. 
} 

這是具有更多的意義..