所以我有以下代码:
- (IBAction)doSomething
{
if (txtName.text != (id)[NSNull null] || txtName.text.length != 0 ) {
NSString *msg = [[NSString alloc] initWithFormat:@"Hello, %@", txtName.text];
[lblMessage setText:msg];
}
}
Run Code Online (Sandbox Code Playgroud)
txtName是一个UITextField,我做错了什么?我只是在用户在框中输入内容时才会显示一些文字.
最好的祝福,
Vla*_*mir 11
文本字段中的文本是NSString实例或nil值,它永远不会等于NSNull类的实例(与nil不同).因此,当第一次比较始终为真时,整个if条件的计算结果为true,并显示消息.
你可以纠正你的if条件
if (txtName.text != nil && txtName.text.length != 0 )
Run Code Online (Sandbox Code Playgroud)
或者,因为向nil发送长度消息,无论如何都将返回0
if (txtName.text.length != 0 )
Run Code Online (Sandbox Code Playgroud)
虽然我通常使用第一个选项进行2次比较
if (txtName.text != (id)[NSNull null] || txtName.text.length != 0 ) {
将其读作"如果文本为空或长度不为0"
txtName.text从来没有nil(nil顺便说一句,你可以比较一下空检查) - 文本框总是包含一些文本,即使它是空的.所以第一个分离总是正确的,并且框总是会出现.
找到解决方案了!![txtName.text isEqualToString:@""]
- (IBAction)doSomething
{
if (![txtName.text isEqualToString:@""]){
NSString *msg = [[NSString alloc] initWithFormat:@"Hello, %@", txtName.text];
[lblMessage setText:msg];
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14636 次 |
| 最近记录: |