Вы могли бы просто иметь метод, как
- (NSString *)stringOrEmptyString:(NSString *)string
{
if (string)
return string;
else
return @"";
}
, а затем просто
[NSString stringWithFormat:@"%@/%@/%@",
[self stringOrEmptyString:three],
[self stringOrEmptyString:two],
[self stringOrEmptyString:one]];
Update:
В качестве альтернативы, если вы не хотите иметь косую черту, если были пустые значения, то в качестве альтернативы может сделать что-то вроде:
NSMutableArray *array = [[NSMutableArray alloc] init];
if (one)
[array addObject:one];
if (two)
[array addObject:two];
if (three)
[array addObject:three];
Тогда вы могли бы получить NSString в результате что-то вроде:
[array componentsJoinedByString:@"/"]
И, конечно же, если вы находитесь в мире не-ARC, вы хотите окончательный [array release]
.
Итак, вы предполагаете, что ни один, ни два, ни три не равны нулю, а скорее всего, что это все строки, возможно, строка с нулевой длиной. Если это проблема, которую он пытается решить, тогда это здорово. Но я предположил, что, когда moshikafya сказал, что «строка является нулевой», он имел в виду, что переменная будет равна нулю, и в этом случае это не сработает. – Rob
Если вы хотите, чтобы он проверял значение null вместо пустой строки, просто замените «!» [CurrentObject isEqualToString: @ ""] "на" currentObject! = Nil "или" currentObject ". –
Да, но тогда ноль initWithObjects - переработанный список не будет работать. Например. если 'two' был равен нулю,' one' никогда не будет добавлен в массив. Но мне нравится ваше мышление о массивах, поэтому я обновил свой ответ с помощью другого возможного решения. – Rob