У меня есть класс 'Контакта' с двумя свойствами: firstName и lastName. Когда я хочу отобразить полное имя контакта, вот то, что я делаю:
NSString *fullName = [NSString stringWithFormat:@"%@ %@", contact.firstName, contact.lastName];
Но когда firstName и/или lastName установлены на ноль, я добираюсь (пустой указатель)"" в строке fullName. Для предотвращения его вот то, что я делаю:
NSString *first = contact.firstName;
if(first == nil) first = @"";
NSString *last = contact.lastName;
if(last == nil) last = @"";
NSString *fullName = [NSString stringWithFormat:@"%@ %@", first, last];
Кто-то знает лучше/больше краткий способ сделать это?
Предполагая, что вас устраивает firstName
или ]
:
NSString *fullName = [NSString stringWithFormat:@"%@ %@",
contact.firstName ?: @"", contact.lastName ?: @""];
( a?: b
- это расширение GCC , которое означает a? a: b
, без оценки a
дважды.)
NSString * fullName = [NSString stringWithFormat: @ "% @% @", первый? первый Последний ? last: @ ""];
, безусловно, немного короче, но в нем та же ошибка, что и в исходном коде, а именно: fullName будет "firstName" или "lastName" (обратите внимание на пробелы), если один или другого не существовало. Таким образом, вы вынуждены писать код вроде
NSMutableString* fullName = [NSMutableString string];
if( contact.firstName ) { [fullName appendString:contact.firstName]; }
if( contact.firstName && contact.lastName ) { [fullName appendString:@" "]; }
if( contact.lastName ) { [fullName appendString:contact.lastName]; }
return fullName;
, чтобы он работал правильно.