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

ala*_*lan 17 cocoa-touch objective-c variable-assignment nsstring

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

someStringValue = someStringValue ?? string.Empty;
Run Code Online (Sandbox Code Playgroud)

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

if(!someStringValue)
   someStringValue = @"";
Run Code Online (Sandbox Code Playgroud)

解决方案感谢@Dave DeLong:

someStringValue = someStringValue ?: @"";
Run Code Online (Sandbox Code Playgroud)

Eri*_*ric 28

简单,使用三元运算符.

someStringValue = someStringValue ? someStringValue : @"";
Run Code Online (Sandbox Code Playgroud)

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

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

样品用法:

someStringValue = StringOrEmpty(someStringValue);
Run Code Online (Sandbox Code Playgroud)

  • ......甚至只是`someStringValue = someStringValue?:@"";` (38认同)