ios - NSString类别方法未调用

标签 ios objective-c

我要解决的问题是将nil字符串转换为空字符串,以便可以将其作为NSDictionary中的值。

我有以下代码:

//Accessed in class  
prospect.title = [self.titleLabel.text emptyWhenNil];

// NSString+Additions Category

-(NSString *) emptyWhenNil
{
   if(self == nil)
      return @"";

   return self;
 }

但是由于某种原因,甚至从未调用emptyWhenNil方法!我迷路了..

最佳答案

问题是,当您的字符串指针是nil时,您没有对象将该类别消息发送到。在Objective-C中不执行发送到nil的消息(并返回nil)。

如果要将“空”对象放入集合中,例如NSDictionaryNSArray,则可以改用NSNull类。

或者,您可以将此方法实现为类方法:

+ (NSString *)emptyStringIfNil:(NSString *)str {
    if (!str) return @"";
    return str;
}

然后,您将其称为
prospect.title = [NSString emptyStringIfNil:self.titleLabel.text];

关于ios - NSString类别方法未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15836350/

相关文章:

iphone - 设置编辑 :animated: is missing animation?

ios - 升级到 Xcode 10 后找不到构建错误 : FBSDKShareKit. h 文件

objective-c - 可以检查 Nib 是否已经加载?

ios - SKShapeNode中的位置笔划

objective-c - 在 Objective-C 中使用 "Self"关键字

ios - 后端的 iPhone Google+ 登录和 OAuth2

html - 可以在 Mac、PC 或其他设备上镜像 iOS Safari 调试控制台吗?

ios - 呈现 App Store 产品 View Controller 变得不可逆转

objective-c - 创建符合协议(protocol)的对象实例

ios - 将 UITouch 管理从 TouchBegan 切换到 UIScrollViewDelegate