Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make nil produces simple empty string in NSStringWithFormat?

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

The result is strNil is @"null"

Well, I want it to be @""

And I want an elegant solution. I know I can just create emptyStringIfNil category method. But that wouldn't work because that function will return nil, instead of @"".

What do you do for this?

Basically I want statements like

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

to show empty everytime the string is nil

For example, if streetAddress is nil, I want &street=&city=Tokyo instead &street=(null)&city=Tokyo

like image 354
user4951 Avatar asked Mar 20 '13 03:03

user4951


2 Answers

I dont know if there is an easier way, but you could just put:

(strName ? strName : @"")

or, more simply put you can use:

strName?:@""

which does the exact same thing.

for each of the strings, which will just place the string in your output if it is not nil, otherwise an empty string.

like image 142
Jsdodgers Avatar answered Oct 15 '22 10:10

Jsdodgers


You could use a C function instead:

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

Then [NSString stringWithFormat:@"%@", emptyStringIfNil(nil)] returns an empty string.

You could also add a class method to NSString, but I personally like the C approach better.

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

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

And then use [NSString emptyStringIfNil:yourString]

like image 20
Sebastian Avatar answered Oct 15 '22 11:10

Sebastian