0

所以我有我声明的 NSString 对象:

NSString *XMLOut;

现在这个对象可以是空的或非空的。

我怎么能看到它?

If ([XMLOut isEqual:nil]) {
    NSLog(@"XMLOut is empty");
} else {
    NSLog(@"XMLOut is not empty");
  }

这是对的吗 ?

4

1 回答 1

1

现在这个对象可以是空的或非空的。

空与 不一样nil

空字符串仍然是字符串。它有一个length(零),您可以将其他字符串附加到它,将其包含在要由某个字符连接的字符串中,等等。

nil不是对象。那里没有字符串。那里什么都没有。它没有长度,也没有任何其他属性。

那么,您的意思是“我想比较我的字符串,可能是nil,以确定它是否是nil”,还是“我想比较我的字符串,可能是的,以确定它是否为空”?

测试是否是nil

isEqual:方法的文档说:

  • anObject:要与接收者进行比较的对象。可能是nil,在这种情况下此方法返回NO

因此,如果XMLOut不是nil[XMLOut isEqual:nil]则保证返回NO

但如果不是nil呢?

nil基本上返回每种零的消息(结构等除外),其中包括NO.

这意味着这[XMLOut isEqual:nil]永远NO

  • 如果XMLOutnil,答案总是NO不管问题。
  • 如果XMLOut不是nil,答案是NO因为没有字符串等于nil

请改用==运算符。XMLOut == nil将正确测试是否XMLOutnil.

测试是否为空

正如 mah 在他们的评论中已经告诉你的那样,向字符串询问它的length.

  • 如果XMLOutnil,则无论问题如何,答案始终为零。
  • 如果XMLOut是一个空字符串,它的长度为零。
  • 如果XMLOut是任何其他字符串,则其长度大于零。
于 2013-10-05T18:12:57.073 回答