所以我有我声明的 NSString 对象:
NSString *XMLOut;
现在这个对象可以是空的或非空的。
我怎么能看到它?
If ([XMLOut isEqual:nil]) {
NSLog(@"XMLOut is empty");
} else {
NSLog(@"XMLOut is not empty");
}
这是对的吗 ?
所以我有我声明的 NSString 对象:
NSString *XMLOut;
现在这个对象可以是空的或非空的。
我怎么能看到它?
If ([XMLOut isEqual:nil]) {
NSLog(@"XMLOut is empty");
} else {
NSLog(@"XMLOut is not empty");
}
这是对的吗 ?
现在这个对象可以是空的或非空的。
空与 不一样nil
。
空字符串仍然是字符串。它有一个length
(零),您可以将其他字符串附加到它,将其包含在要由某个字符连接的字符串中,等等。
nil
不是对象。那里没有字符串。那里什么都没有。它没有长度,也没有任何其他属性。
那么,您的意思是“我想比较我的字符串,可能是nil
,以确定它是否是nil
”,还是“我想比较我的字符串,可能是空的,以确定它是否为空”?
nil
该isEqual:
方法的文档说:
anObject
:要与接收者进行比较的对象。可能是nil
,在这种情况下此方法返回NO
。
因此,如果XMLOut
不是nil
,[XMLOut isEqual:nil]
则保证返回NO
。
但如果不是nil
呢?
nil
基本上返回每种零的消息(结构等除外),其中包括NO
.
这意味着这[XMLOut isEqual:nil]
将永远是NO
:
XMLOut
是nil
,答案总是NO
不管问题。XMLOut
不是nil
,答案是NO
因为没有字符串等于nil
。请改用==
运算符。XMLOut == nil
将正确测试是否XMLOut
为nil
.
正如 mah 在他们的评论中已经告诉你的那样,向字符串询问它的length
.
XMLOut
是nil
,则无论问题如何,答案始终为零。XMLOut
是一个空字符串,它的长度为零。XMLOut
是任何其他字符串,则其长度大于零。