2014-02-23 220 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