我试图评估一个表单字段的内容,当空的时候抛出一个错误。检查长度时执行速度很差执行错误
这里是出口代码
@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结果将返回该字段的状态。 –