6
    NSString * strNil= [NSString stringWithFormat:@"%@",nil];

結果は strNil is @"null" です

うーん、@""にしたい

そして、エレガントなソリューションが必要です。emptyStringIfNil カテゴリ メソッドを作成するだけでよいことはわかっています。しかし、その関数は @"" ではなく nil を返すため、これは機能しません。

あなたはこれのために何をしますか?

基本的に私は次のようなステートメントが欲しい

NSString * result =[NSString stringWithFormat:@"http://%@/business/api/addOrEditBusiness.php?flag=%@&title=%@&building=%@&latitude=%@&longitude=%@&website=%@&street=%@&city=%@&country=%@%@&originalid=%@&inbuildingaddress=%@&email=%@&zip=%@%@&userid=%@%@",urlServer,strFlag,biz.Title.RobustURLEncodedString,biz.buildingName.RobustURLEncodedString,@(coord.latitude),@(coord.longitude),biz.Website.RobustURLEncodedString,biz.Street.RobustURLEncodedString, biz.City.Name.RobustURLEncodedString, biz.City.Country.Name.RobustURLEncodedString,strPhonesParameter,biz.ID.RobustURLEncodedString,biz.InBui

文字列が nil になるたびに空を表示する

たとえば、streetAddress が nil の場合、代わりに &street=&city=Tokyo が必要です &street=(null)&city=Tokyo

4

3 に答える 3

7

もっと簡単な方法があるかどうかはわかりませんが、次のように入力できます。

(strName ? strName : @"")

または、より簡単に言えば、次を使用できます。

strName?:@""

これはまったく同じことを行います。

各文字列に対して、nil でない場合は文字列を出力に配置し、そうでない場合は空の文字列を配置します。

于 2013-03-20T03:50:12.027 に答える
6

代わりに C 関数を使用できます。

static inline NSString* emptyStringIfNil(NSString *s) {
    return s ? s : @"";
}

その後[NSString stringWithFormat:@"%@", emptyStringIfNil(nil)]、空の文字列を返します。

にクラス メソッドを追加することもできますがNSString、個人的には C のアプローチの方が好きです。

@interface NSString (EmptyIfNil)
+ (NSString*)emptyStringIfNil:(NSString*)s;
@end

@implementation NSString (EmptyIfNil)
+ (NSString*)emptyStringIfNil:(NSString*)s {
    return s ? s : @"";
}
@end

そして、使用します[NSString emptyStringIfNil:yourString]

于 2013-03-20T03:47:29.563 に答える