1

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

我有以下代码:

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

// NSString+Additions Category

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

   return self;
 }

但是由于某种原因,该emptyWhenNil方法甚至从未被调用过!!我搞不清楚了..

4

3 回答 3

13

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

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

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

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

然后,您可以将其称为

prospect.title = [NSString emptyStringIfNil:self.titleLabel.text];
于 2013-04-05T14:23:25.657 回答
1

如果NSString指针是nil,则不会在其上调用该方法,您可以做的是创建一个静态方法:

+ (NSString *) emptyIfNil:(NSString *) str
{
    return str == nil ? @"" : str;
}
于 2013-04-05T14:24:46.923 回答
1

如果字符串为 nil,则不self执行该方法。在这种情况下,运行时的默认行为是返回一个默认的 nil 值。

您应该将其实现为静态方法。像这样的东西:

+ (NSString *)emptyStringIfNil:(NSString *)input
{
    return input ? input : @"";
}
于 2013-04-05T14:26:07.313 回答