Efficient way to concatenate uncertain strings in Objective-C -


i want concatenate strings variables if variables not nil. if nil, don't want include them. following code works clunky , grows proportionately more complex additional variables. can recommend more elegant way this?

nsstring *city = self.address.city== nil ? @"" : self.address.city; nsstring *state = self.address.state== nil ? @"" : self.address.state; nsstring *zip = self.address.zip== nil ? @"" : self.address.zip; nsstring *bestcity;  if (city.length>0&&state.length>0&&zip.length>0) {      bestcity = [nsstring stringwithformat: @"%@ %@ %@", city, state,zip]; } else if (city.length>0&&state.length>0) {     bestname = [nsstring stringwithformat: @"%@ %@", city,state]; } else if (city.length>0&&zip.length>0) {     bestcity = [nsstring stringwithformat: @"%@ %@", city,zip]; } else if (city.length>0&&zip.length>0) {     bestcity = [nsstring stringwithformat: @"%@ %@", city,zip]; } else if (city.length>0) {     bestcity = [nsstring stringwithformat: @"%@", city]; } else if (state.length>0) {     bestcity = [nsstring stringwithformat: @"%@", state]; } else if (zip.length>0) {     bestcity = [nsstring stringwithformat: @"%@", zip]; } else {     bestcity = @""; } 

i like:

nsmutablearray *bestcityarr = [@[] mutablecopy]; // [[nsmutablearray alloc] init];  if (city.length > 0)     [bestcityarr addobject:city];  if (state.length > 0)     [bestcityarr addobject:state];  if (zip.length > 0)     [bestcityarr addobject:zip];  nsstring *bestcity = [bestcityarr componentsjoinedbystring:@" "]; 

Comments

Popular posts from this blog

android - Why am I getting the message 'Youractivity.java is not an activity subclass or alias' -

Making Empty C++ Project: General exception (Exception from HRESULT:0x80131500) Visual Studio Community 2015 -

How to fix java warning for "The value of the local variable is not used " -