2012-07-03 26 views
21

我在Objective C中比較新,但沒有編程。我想知道如何將一個NSString附加到另一個NSString上。我正在製作一個應用程序,用戶必須完成一個基本句子,我想知道如何獲取用戶輸入的字符串並將其附加到屏幕上的當前字符串中?如何在另一個NSString上附加一個NSString

回答

41

我想你正在尋找NSString的stringByAppendingString函數。 請看下面的例子。

NSString *errorTag = @"Error: "; 
NSString *errorString = @"premature end of file."; 
NSString *errorMessage = [errorTag stringByAppendingString:errorString]; 

產生字符串「Error:過早結束文件。」。

+0

非常感謝!這個例子很好用! :) –

13

看起來你有你的答案,但你也可以使用stringWithFormat:方法,像這樣:

NSString *sample1 = @"Hello"; 
NSString *sample2 = @"Being appended"; 

NSString *complete = [NSString stringWithFormat:@"%@%@", sample1, 
sample2]; 
31

這也可以通過使用一個的NSMutableString來實現:

NSMutableString *string = [NSMutableString stringWithString:@"String 1"]; 
[string appendString:@"String 2"]; 
+1

如果你想追加數據(更多的字符串)在同一個變量,那麼'NSMutableString'是實際的解決方案。當你想要在同一個變量中追加數據時'stringByAppendingString'不是內存友好的。 – Ans

2

你不能真正追加一個NSString到另一個,因爲類NSString不可變。所有的標準數據結構都有可變和不可變的變體(NSMutableString與NSString,NSMutableArray與NSArray等)。如果您想更改內容而不重新分配新對象,則需要使用可變版本。您可以通過重新建立一個新的NSString:

NSString* string3 = [NSString stringWithFormat:@"%@%@",string1,string2]; 

這是不好的表現,雖然,所以如果你打算這樣做,在一個循環或一些性能敏感的區域(即你不停地一遍又一遍追加到相同的字符串再次)這是保證會導致你一個問題(我犯了這個錯誤之前)。

相反,你應該使用的NSMutableString和第二個字符串追加到它:

NSMutableString* string1 = [NSMutableString alloc] init]; 
[string1 appendString:string2];