我想解决的问题是将nil字符串转换为空字符串,因此我可以将其作为NSDictionary
中的值。
我有以下代码:
//Accessed in class
prospect.title = [self.titleLabel.text emptyWhenNil];
// NSString+Additions Category
-(NSString *) emptyWhenNil
{
if(self == nil)
return @"";
return self;
}
但由于某些原因,甚至从未调用emptyWhenNil
方法!我迷路了..
答案 0 :(得分:13)
问题是,当您的字符串指针为nil
时,您没有对象发送该类别消息。在Objective-C中未执行到nil
的消息(并返回nil
)。
如果你想把" null"将对象转换为集合(例如NSDictionary
或NSArray
),您可以改为使用NSNull
类。
或者,您可以将此方法实现为类方法:
+ (NSString *)emptyStringIfNil:(NSString *)str {
if (!str) return @"";
return str;
}
然后你会将其称为
prospect.title = [NSString emptyStringIfNil:self.titleLabel.text];
答案 1 :(得分:1)
如果NSString
指针为nil
,则不会调用该方法,您可以创建一个静态方法:
+ (NSString *) emptyIfNil:(NSString *) str
{
return str == nil ? @"" : str;
}
答案 2 :(得分:1)
如果字符串为nil,则没有self
来执行该方法。在这种情况下,运行时的默认行为是返回默认的nil值。
您应该将其实现为静态方法。像这样:
+ (NSString *)emptyStringIfNil:(NSString *)input
{
return input ? input : @"";
}