Cocoa NSString对象比较零

Cocoa NSString对象比较零,cocoa,object-code,Cocoa,Object Code,所以我有一个NSString对象,我声明为: NSString*XMLOut 现在这个对象可以是空的,也可以是非空的 我怎么能看到它 If ([XMLOut isEqual:nil]) { NSLog(@"XMLOut is empty"); } else { NSLog(@"XMLOut is not empty"); } 对吗 现在这个对象可以是空的,也可以是非空的 空与nil不是一回事 空字符串仍然是字符串。它有一个长度(零),您可以将其他字符串附加到它,将其包含在字

所以我有一个NSString对象,我声明为:

NSString*XMLOut

现在这个对象可以是空的,也可以是非空的

我怎么能看到它

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

现在这个对象可以是空的,也可以是非空的

空与
nil
不是一回事

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

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

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

测试是否为
nil
isEqual:
方法的文档说明:

  • anObject
    :要与接收器进行比较的对象。可能是
    nil
    ,在这种情况下,此方法返回
    NO
因此,如果
XMLOut
不是
nil
[XMLOut isEqual:nil]
保证返回
NO

但是如果它不是
nil

发送到
nil
的消息基本上返回各种类型的零(结构等除外),其中包括
NO

这意味着
[XMLOut isEqual:nil]
将始终是

  • 如果
    XMLOut
    nil
    ,则无论问题是什么,答案总是
    NO
  • 如果
    XMLOut
    不是
    nil
    ,则答案是
    NO
    ,因为没有字符串等于
    nil
请改用
=
运算符
XMLOut==nil
将正确测试
XMLOut
是否为
nil

测试它是否为空 正如mah在他们的评论中已经告诉您的,询问字符串的
长度

  • 如果
    XMLOut
    nil
    ,则无论问题是什么,答案始终为零
  • 如果
    XMLOut
    是空字符串,则其长度为零
  • 如果
    XMLOut
    是任何其他字符串,则其长度大于零

如果([XMLOut length]==0)NSLog(@“XMLOut为空),则使用
好的,我使用此代码进行此测试:If([XMLOut length]==0){NSLog(@“XMLOut为空);)