Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS可以';t检查对象是否为空_Ios_Ios5 - Fatal编程技术网

iOS可以';t检查对象是否为空

iOS可以';t检查对象是否为空,ios,ios5,Ios,Ios5,因此,我有以下代码: - (IBAction)doSomething { if (txtName.text != (id)[NSNull null] || txtName.text.length != 0 ) { NSString *msg = [[NSString alloc] initWithFormat:@"Hello, %@", txtName.text]; [lblMessage setText:msg]; } } txtName是一个UITextField,我做错

因此,我有以下代码:

- (IBAction)doSomething
{
if (txtName.text != (id)[NSNull null] || txtName.text.length != 0 ) {
    NSString *msg = [[NSString alloc] initWithFormat:@"Hello, %@", txtName.text];
    [lblMessage setText:msg];
}

}
txtName
是一个
UITextField
,我做错了什么?我试图只在用户在框中键入内容时显示一些文本

致以最诚挚的问候,

如果(txtName.text!=(id)[NSNull null]| | txtName.text.length!=0){

将其理解为“如果文本为空或长度不是0”


txtName.text
从来都不是
nil
(顺便说一句,您可以将
nil
与之进行比较以进行空检查)-文本框始终包含一些文本,即使它是空的。因此,第一个分隔符始终为true,并且该框将始终显示。

文本字段中的文本是
NSString
实例或
nil
值,它永远不等于
NSNull
类的实例(与nil不同)。因此,由于第一次比较始终为真,则整个if条件的计算结果为真,并显示消息

您可以将您的if条件更正为

if (txtName.text != nil && txtName.text.length != 0 )
或者,由于向nil发送长度消息将返回0,所以只需

if (txtName.text.length != 0 )

虽然我通常使用第一个选项进行两次比较

找到的解决方案!
![txtName.text IsequalString:@”“]


我和你们一样也遇到了同样的问题。这个问题与NSNull类有关。这是我检查对象是否为null的代码

    NSString* text;
    if([text isKindOfClass:[NSNull class]])
    {
           //do something here if that object is null
    }
希望这能有所帮助。

请尝试以下方法:

#define SAFESTRING(str) ISVALIDSTRING(str) ? str : @""
#define ISVALIDSTRING(str) (str != nil && [str isKindOfClass:[NSNull class]] == NO)
#define VALIDSTRING_PREDICATE [NSPredicate predicateWithBlock:^(id evaluatedObject, NSDictionary *bindings) {return (BOOL)ISVALIDSTRING(evaluatedObject);}]
SAFESTRING(PASS_OBJECT OR STRING);
myObj的值为nil

if([myObj isEqual:[NSNull class]] || !myObj) {

// your code

}

NSString的实例永远不等于NSNull的单例实例。你确定你编译了更改吗?@Uffo,很抱歉我犯了愚蠢的错误-你必须在if条件下使用&,而不是| |。应该是
[NSNull]
if([myObj isEqual:[NSNull class]] || !myObj) {

// your code

}