私はいくつかのGoogleの検索結果を見てきたし、nil
ためNSString
をテストするためのさまざまな方法を発見した、などNSStringの:戻り値や空の文字列
は、だから私はNSString
のためのいくつかのcategory
メソッドを書くことにしました助けて。しかし、それは期待どおりに動作していないと誰かが私が解決策の理由と可能性のあるヘルプを把握するのを助けることができるかどうか疑問に思っています。だから、stringOrEmpty
の背後にある考え方は空NSString
(ないnil
として結果を強制することです
NSString+Extenstions.h
#import
@interface NSString (Extensions)
- (NSString *)stringOrNil;
- (NSString *)stringOrEmpty;
@end
NSString+Extenstions.m
#import "NSString+Extensions.h"
@implementation NSString (Extensions)
- (NSString *)stringOrNil {
return self == nil || [self length] == 0 ? nil : self;
}
- (NSString *)stringOrEmpty {
return [self stringOrNil] == nil ? @"" : self;
}
@end
:だからここ
は私が思い付いたものです)オブジェクトがnil
または長さが0の場合
テスト:
NSString *name = nil;
NSLog(@"%@", [name stringOrEmpty]); // result: (null)
私は上記の結果が空白であることを、期待が、コンソールは(null)
としてそれをログに記録。 S stringOrEmpty
メソッドをreturn [[self stringOrNil] length] == 0 ? @"yes" : @"no";
に変更し、yes
と表示されると予想されましたが、再び(null)
となりました。 stringOrEmpty
が呼び出されていないようです。
最後に私はNSLog(@"%@", [name class]);
をテストしましたが、結果は(null)
でした。
私は何かを誤解していますか?値がnil
または本当に空の場合、ブランクNSString
の値を返すカテゴリを作成するにはどうすればよいですか?
ありがとうございます!
。単にnilを返します。それらをクラスメソッドとして定義する必要があります。 – ozgur
@ozgurああ、私は 'NSString'として' name'を定義していますが、 'nil'は' NSString'メソッドの呼び出しを許可しません。 – RoLYroLLs
nilへのメッセージは何もせず、型に応じて 'nil、Nil、NULL、0、または0.0'を返します。そう、ええ、あなたが正しいです。 – ozgur