Назначьте пустую строку только в том случае, если переменная равна nil (тройной оператор) - программирование

Назначьте пустую строку только в том случае, если переменная равна nil (тройной оператор)

Я пытаюсь добиться эквивалента следующего кода С#:

someStringValue = someStringValue ?? string.Empty;

Где, если someStringValue равно null, будет назначено значение string.Empty (пустая строка: ""). Как достичь этого в Objective-C? Я единственный вариант:

if(!someStringValue)
   someStringValue = @"";

Решение благодаря @Dave DeLong:

someStringValue = someStringValue ?: @"";
4b9b3361

Ответ 1

Простой, используя тернарный оператор.

someStringValue = someStringValue ? someStringValue : @"";

Или, если вам нужен макрос, вы тоже можете это сделать.

#if !defined(StringOrEmpty)
    #define StringOrEmpty(A)  ({ __typeof__(A) __a = (A); __a ? __a : @""; })
#endif

Использование образца:

someStringValue = StringOrEmpty(someStringValue);

Ответ 2

Если someStringValue является переменной класса, вы можете добавить этот код в свой .m файл, которому принадлежит строка

- (void)setSomeStringValue:(NSString *)newSomeStringValue
{
   if (!newSomeStringValue) newSomeStringValue = @"";
   _someStringValue = newSomeStringValue;
}