我試圖評估一個表單字段的內容,當空的時候拋出一個錯誤。檢查長度時執行速度很差執行錯誤
這裏是出口代碼
@IBOutlet var txtUsername : UITextField!
這裏是目標字段中的println。
println("\(txtUsername)")
<UITextField: 0x10e8280a0; frame = (20 40; 280 30); text = ''; clipsToBounds = YES; opaque = NO; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x10e828b20>; layer = <CALayer: 0x10e828300>>
所以,看這個,我會以爲txtUsername.text爲空或==「」。但是我試圖做的所有事情都會引發錯誤。
if countElements(txtUsername.text as String) != 0 {
... code here
}
if txtUsername.text.bridgeToObjectiveC().length != 0 {
... code here
}
if txtUsername.text.utf16count != 0 {
... code here
}
if txtUsername.text != "" {
... code here
}
全部帶回「EXC_BAD_INSTRUCTION(代碼= EXC_I386_INVOP,子碼=爲0x0)
此外,評估是否是零似乎並沒有工作。下面的腳本顯示,有一些東西進行評估,即使它是空的。問題是,告訴它是否是空的。
如果該字段是零,我希望它返回false並觸發else語句。
if let evalText = txtUsername.text{
println("There is something here : \(evalText)")
} else {
println("text is nil")
}
// This returns "There is something here:"
if txtUsername.text{
println("There is something here")
} else {
println("text is nil")
}
// This returns "There is something here"
我甚至試圖在變量中設置該值,只是讓它在點擊「if」語句後排除錯誤。
感謝,
您確定'txtUsername'已正確連接到您的插座嗎?如果'txtUsername'實際上是'nil',所有這些都會崩潰,所以你甚至不會去'.text'。 'IBOutlet'變量暗示爲'!',所以也許你不需要那個。 – Jack
如果'txtUsername'已被正確導入,4個'if'分支都不會導致崩潰。 – holex
連接正確。我可以毫無問題地修改這些字段。此外,該字段上的println結果將返回該字段的狀態。 –