Objective c 如何使nil以NSStringWithFormat生成简单的空字符串?
结果是strNil为@“null” 嗯,我希望它是@” 我想要一个优雅的解决方案。我知道我可以创建emptyStringIfNil类别方法。但这不起作用,因为该函数将返回nil,而不是@” 你是怎么做的 基本上我想要这样的陈述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)
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也有它)。