所以我声明了NSString对象:
NSString * XMLOut;
现在这个对象可以为空或非空。
我怎么能看到它?
If ([XMLOut isEqual:nil]) {
NSLog(@"XMLOut is empty");
} else {
NSLog(@"XMLOut is not empty");
}
是正确的吗?
答案 0 :(得分:1)
现在这个对象可以为空或非空。
空与nil
不同。
空字符串仍然是一个字符串。它有一个length
(零),你可以为它添加其他字符串,将它包含在字符串中以便由某个字符连接等等。
nil
不是对象。那里没有字符串。那里什么都没有。它没有长度,也没有任何其他属性。
那么,你的意思是“我想比较我的字符串,可能是nil
,以确定它是nil
”,还是“我想比较我的字符串,这可能是< em>为空,以确定它是否为空“?
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
是任何其他字符串,则其长度大于零。