2013-09-26 28 views
1
NSMutableString *chars=[ [NSMutableString alloc] initWithString:@""] ; 
    NSString *temp=[[self convertDecimalToChar:(digitizer%10)] copy]; //temp is good 
    [chars stringByAppendingString:temp]; //chars is empty 

任何想法最新怎麼了? 謝謝。StringByAppendingString函數不起作用?

回答

1

stringByAppendingString方法是在非 - 可變的NSString類,其中非可變意味着你不能修改它

因此,與其他大多數NSString方法一樣,它將返回一個新的NSString對象,在這種情況下包含原始字符串以及您在參數中傳遞的所有對象。

但是給你實際上是在操縱一個NSMutableString對象,它可變的,你可能希望appendString:方法代替:

[chars appendString:temp]; 
+0

我不明白,如果NSString的非可變的,所以你怎麼能添加更多的字符串呢?從你的答案我得到,我必須將其更改爲nsstring? – Curnelious

+1

@Curnelious啊,我想我說,它返回一個新的對象(不是原來的)。 – trojanfoe

+0

好吧,謝謝。 – Curnelious

0

如果你看一看這種方法的documentation,你需要做的:

chars = [chars stringByAppendingString:temp]; 

它返回一個新的NSString兩者結合的NSString,實際上沒有改變接收機。

2

這條線:

[chars stringByAppendingString:temp]; 

是supossed返回一個字符串組合這兩個字符串。

- (NSString *)stringByAppendingString:(NSString *)aString 

如果你想爲一個字符串只是追加到您的字符串,這樣做:

[chars appendString:temp]; 

在這裏找到的文檔:

NSmutableString