18

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

someStringValue = someStringValue ?? string.Empty;

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

if(!someStringValue)
   someStringValue = @"";

感谢@Dave DeLong的解决方案

someStringValue = someStringValue ?: @"";
4

2 回答 2

29

很简单,使用三元运算符。

someStringValue = someStringValue ? someStringValue : @"";

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

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

示例用法:

someStringValue = StringOrEmpty(someStringValue);
于 2013-01-05T18:25:16.787 回答
0

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

- (void)setSomeStringValue:(NSString *)newSomeStringValue
{
   if (!newSomeStringValue) newSomeStringValue = @"";
   _someStringValue = newSomeStringValue;
}
于 2013-01-05T18:28:40.157 回答