Objective c 如何使nil以NSStringWithFormat生成简单的空字符串?

Objective c 如何使nil以NSStringWithFormat生成简单的空字符串?,objective-c,xcode4.5,Objective C,Xcode4.5,结果是strNil为@“null” 嗯,我希望它是@” 我想要一个优雅的解决方案。我知道我可以创建emptyStringIfNil类别方法。但这不起作用,因为该函数将返回nil,而不是@” 你是怎么做的 基本上我想要这样的陈述 NSString * strNil= [NSString stringWithFormat:@"%@",nil]; 每次字符串为零时显示空 例如,如果streetAddress为nil,我希望使用&street=&city=Tokyo&street=(null)

结果是strNil为@“null”

嗯,我希望它是@”

我想要一个优雅的解决方案。我知道我可以创建emptyStringIfNil类别方法。但这不起作用,因为该函数将返回nil,而不是@”

你是怎么做的

基本上我想要这样的陈述

    NSString * strNil= [NSString stringWithFormat:@"%@",nil];
每次字符串为零时显示空


例如,如果streetAddress为nil,我希望使用&street=&city=Tokyo&street=(null)&city=Tokyo

您可以使用C函数代替:

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
然后
[NSString stringWithFormat:@“%@”,emptyStringIfNil(nil)]
返回一个空字符串

您也可以将class方法添加到
NSString
,但我个人更喜欢C方法

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

然后使用
[NSString emptyStringIfNil:yourString]
我不知道是否有更简单的方法,但您可以放:

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

@implementation NSString (EmptyIfNil)
+ (NSString*)emptyStringIfNil:(NSString*)s {
    return s ? s : @"";
}
@end
或者,更简单地说,您可以使用:

(strName ? strName : @"")
它做着完全相同的事情

对于每个字符串,如果字符串不是nil,则只将其放在输出中,否则为空字符串。

试试这个

strName?:@""
输出::
==>1

NSString *strNil1 = [[NSString alloc] init];
strNil1 = @"1";
strNil1  = strNil1 ? strNil1 : @"";
NSLog(@" ==> %@", strNil1);
输出::
==>

NSString *strNil1 = [[NSString alloc] init];
strNil1 = @"1";
strNil1  = strNil1 ? strNil1 : @"";
NSLog(@" ==> %@", strNil1);
希望你能得到


谢谢。

为什么您的
清空stringifnil
分类方法返回
nil
?如果您将其编写为:
返回字符串?字符串:@”[anObject emptyStringIfNil]
并且
anObject
为nil,则该方法返回nil。@Sebastian说得对。如果将
emptyStringIfNil
编写为函数而不是实例方法,则这不是问题。这就是你的答案所显示的。:)它是一个GCC扩展(因此Clang也有它)。