仅当变量为nil时才分配空字符串(三元运算符)

时间:2013-01-05 18:22:13

标签: objective-c cocoa-touch nsstring variable-assignment

我正在尝试实现以下C#代码的等价物:

someStringValue = someStringValue ?? string.Empty;

如果someStringValue为空,则将分配值string.Empty(空字符串:"")。我如何在Objective-C中实现这一目标?是我唯一的选择:

if(!someStringValue)
   someStringValue = @"";

解决方案感谢@Dave DeLong

someStringValue = someStringValue ?: @"";

2 个答案:

答案 0 :(得分:27)

简单,使用三元运算符。

someStringValue = someStringValue ? someStringValue : @"";

或者如果你想要一个宏,你也可以这样做。

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

样本用法:

someStringValue = StringOrEmpty(someStringValue);

答案 1 :(得分:0)

如果someStringValue是一个类变量,您可以将此代码添加到拥有该字符串的.m文件中

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