2012-11-23 34 views
0

我想通過類別自己分配一個調整後的nsstring。 這個例子是一個微調功能:NSString類別的自賦值

我不想這樣:

NSString *theTempString = [theExampleString xTrim]; 
// ... go on doing stuff with theTempString 

我想這樣說:

[theExampleString xTrim]; 
// ... go on doing stuff with theExmapleString 

類別如下:

- (void)xTrim 
{ 
    self = [self stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]]; 

} 

init之外的賦值錯誤是不可能的 - 我明白這一點。 但是現在我對它感興趣,當然我可以編寫一個自定義的init方法,但是它沒有辦法像上面那樣?

問候和感謝,

馬蒂亞斯

回答

2

你並不需要創建一個新的NSString,該方法已不適合您:

- (NSString *)xTrim 
{ 
    return [self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
} 

的NSString是不可改變的,所以你需要分配它:

yourString = [yourString xTrim]; 
+0

該死的,非常感謝給我踢了一個...當然NSString不是一個可變的... arrrrgh ... - – user617965

3

你不能在的類別中做到這一點,因爲NSString管理不可變的字符串,這意味着該字符串在創建後無法更改。

您可以實現它的類別上NSMutableString

- (void)xTrim 
{ 
    NSString *trimmed = [self stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]]; 
    [self setString:trimmed]; // replaces the characters of "self" with those of "trimmed". 
} 

如果你的問題是:我可以寫一個方法xTrim這樣

[theExampleString xTrim] 

取代接收theExampleString用新實例:不,那是不可能的。

+0

該死的,非常感謝給我一腳踢在..當然NSString不是一個可變的... arrrrgh ... – user617965