所以我有我声明的 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是任何其他字符串,则其长度大于零。