だから私はそう宣言する 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たい」または「空の可能性がある文字列を比較して、それが空であるかどうかを判断したい」という意味ですか?
nilisEqual:メソッドのドキュメントには次のように書かれています。
anObject: レシーバーと比較されるオブジェクト。である可能性がnilあり、その場合、このメソッドは を返しますNO。
したがって、そうXMLOutでない場合はnil、[XMLOut isEqual:nil]が返されることが保証されていNOます。
しかし、そうでない場合はどうなりnilますか?
nil基本的にすべての種類のゼロ (構造体などを除く)を返すメッセージNO。
つまり、常に次のようになり[XMLOut isEqual:nil]ます。NO
XMLOutである場合、質問に関係なくnil、答えは常にです。NOXMLOutではない場合nil、答えはNOに等しい文字列がないためnilです。==代わりに演算子を使用してください。XMLOut == nilかどうかを正しくテストしXMLOutますnil。
mah がコメントで既に述べたように、文字列にそのlength.
XMLOutがの場合nil、質問に関係なく、答えは常にゼロです。XMLOut、その長さはゼロです。XMLOutが他の文字列の場合、その長さは 0 より大きくなります。