2017-08-03 67 views
0

Swift新手在這裏試圖設置數據驗證功能,但是我的代碼生成以下錯誤:「Binary operator'>'不能應用於兩個'Double?'。操作數「Beginner Swift 3數據驗證

func validateDouble(text: String) -> Bool { 
    var result = false 

    // test input to see if it is a positive Double once text is converted 
    if Double(text) > 0.0 { 
     result = true 
    } 
} 

我很難過,希望有任何幫助。

感謝,

納斯

回答

2

因爲當你將字符串轉換爲double類型還給可選值,所以它可能是零或沒有。這就是爲什麼與精確值進行比較是不可能的。像這樣嘗試。

func validateDouble(text: String) -> Bool { 
    var result = false 

    // test input to see if it is a positive Double once text is converted 
    if let doubleValue = Double(text) { 
     if doubleValue > 0.0 { 
     result = true 
     } 
    } 
} 
+0

哇 - 欣賞超快速的答案! !我後來打算處理這種零的可能性,但我看到,拖延處理零事件並不是一個可行的策略。非常感謝你 - 你回答完美的作品! – Nas

+0

@Nas歡迎,你說你是新手很快,這就是爲什麼我長時間闡述這個答案,否則它也可以用簡短的方式完成。如果你想知道@Jaydeep – Jaydeep

+0

,你也可以使用where子句(即使用',')來修改你的if語句,這就像更快捷的特性。例如(如果讓doubleValue = Double(text),doubleValue> 0.0 {}) –

1

你需要檢查確保轉換後的值不爲零,這應該做的伎倆:

func validateDouble(text: String) -> Bool { 

    // test input to see if it is a positive Double once text is converted 
    guard let value = Double(text), value > 0.0 else { return false } 
    return true 

} 
1

試試這個

if let doubleValue = Double(text), doubleValue > 0.0 { 
    result = true 
}