2012-07-03 19 views
21

Ich bin relativ neu in Objective C, aber nicht mit der Programmierung. Ich habe mich gefragt, wie Sie einen NSString an einen anderen anhängen können. Ich mache eine App, in der ein Benutzer einen grundlegenden Satz beenden muss, und ich frage mich, wie man die Zeichenkette, die der Benutzer eingegeben hat, erhält und an die aktuelle, die auf dem Bildschirm ist, anhängt?Wie man einen NSString an einen anderen NSString anfügt

Antwort

41

Ich denke, Sie suchen nach StringByAppendingString-Funktion von NSString. Siehe das Beispiel unten.

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

erzeugt die Zeichenfolge "Fehler: vorzeitiges Ende der Datei.".

+0

Vielen Dank! Das Beispiel funktioniert großartig! :) –

13

Es sieht aus wie Sie Ihre Antwort haben, aber Sie können auch die stringWithFormat: Methode, wie so verwenden:

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

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

Dies auch unter Verwendung eines NSMutableString erreicht werden konnte:

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

Wenn Sie Daten (mehr Zeichenfolgen) in derselben Variablen anhängen möchten, dann ist 'NSMutableString' die tatsächliche Lösung. 'stringByAppendingString' ist nicht speicherfreundlich, wenn Sie Daten in derselben Variablen anhängen möchten. – Ans

2

Sie können nicht Fügen Sie einen NSString wirklich an einen anderen an, da der NSString der Klasse nicht veränderbar ist. Alle Standard-Datenstrukturen weisen veränderbare und nicht veränderbare Varianten auf (NSMutableString vs NSString, NSMutableArray vs NSArray usw.). Wenn Sie den Inhalt ändern möchten, ohne ein neues Objekt neu zuzuordnen, sollten Sie die veränderbare Version verwenden. Sie können einen neuen NSString neu mit:

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

Das ist schlecht für die Leistung aber so, wenn Sie es in einer Schleife oder einem Leistungs sensiblen Bereich (tun werden, dh Sie auf die gleiche Zeichenfolge immer anhängt über und über wieder) das ist garantiert ein Problem (ich habe diesen Fehler schon gemacht).

Stattdessen sollten Sie wahrscheinlich die NSMutableString verwenden und die zweite Zeichenfolge anhängen:

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