2014-02-23 118 views
1

我正在创建NSString类的扩展。我有这样的声明创建NSString类的扩展

@implementation NSString (Extensions) 

+ (NSString *)extractNumbersFromString { 

    return [[self componentsSeparatedByCharactersInSet: 
      [[NSCharacterSet decimalDigitCharacterSet] invertedSet]] 
      componentsJoinedByString:@""]; 

} 

我有这样的错误:“对于选择componentsSeparatedByCharactersInSet没有已知的类方法”

为什么呢?如果这个选择器是NSString的一部分,我正在扩展它,我不明白这个错误...

回答

1

componentsSeparatedByCharactersInSet:是一个实例方法,而不是一个类方法。您正在尝试在类方法中调用它,因此没有应该发送消息的实例。

因此,该消息正在发送到它认为是一种名为componentsSeparatedByCharactersInSet:的类方法,该方法不存在 - 因此是错误。

要修复它扩展的签名改为:

- (NSString *)extractNumbersFromString 
+0

哦,你是对的。 Duhhh!谢谢! – SpaceDog