Назначьте пустую строку только в том случае, если переменная равна nil (тройной оператор)
Я пытаюсь добиться эквивалента следующего кода С#:
someStringValue = someStringValue ?? string.Empty;
Где, если someStringValue
равно null, будет назначено значение string.Empty
(пустая строка: ""
). Как достичь этого в Objective-C? Я единственный вариант:
if(!someStringValue)
someStringValue = @"";
Решение благодаря @Dave DeLong:
someStringValue = someStringValue ?: @"";
Ответы
Ответ 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;
}