• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

NSString erweitern

reeng

Granny Smith
Registriert
30.08.10
Beiträge
13
Hallo zusammen

Da ich im Frühjahr 2011 meine Bachelor-Arbeit schreiben werde und diese ein iPhone-App beinhalten wird, bin ich mich bereits jetzt schon in iPhone SDK am Einarbeiten. Das Buch dazu (Das grosse iPhone Entwickler Buch) sollte auch demnächst in meinem Briefkasten landen;-). Zu meinem Problem: Ich definiere drei String-Variablen:
Code:
NSString *test1 = @"hello";
NSString *test2 = @" ";
NSString *test3 = @"world";
Nun möchte ich in einer weiteren Variable test4 die drei Strings test1, test2 und test3 zusammenhängen. Also in etwa so:
Code:
NSstring *test4 = test1 +test3 + test2;
Dies funktioniert leider nicht :-(. Ich habe bereits mehrere Möglichkeiten ausprobiert ( &, and ++ usw...). Oder zumindest in ein textField sollten diese Variablen doch nacheinander eingefügt werden können? In Visual Basic .NET geht dies einfach mit dem Syntax textfield1.text = test1 + test2 + test3 (Entschuldigt bitte, wenn ich hier mit einem PC-Beispiel komme). Könnte mir also Jemand helfen und schreiben, wie ich mehrere NSString zusammensetzen kann?

Vielen Dank im Voraus.

Gruss Reeng aus der Schweiz...
 
NSString ist immutable.

Du könntest NSMutableString nutzen (siehe API-Dokumentation) oder einen neuen String erzeugen mittels
Code:
[NSString stringWithFormat:@"%@%@%@", test1, test2, test3];
 
Hallo bezierkurve

Vielen Dank für deine rasche Antwort. Habe es soeben erfolgreich getestet. Mit dieser Lösung kann ich ebenso Inhalte aus zwei textFields in eine NSString-Variable speichern und danach als Label anzeigen lassen.

Danke nochmals und Gruss

Reeng
 
Zuletzt bearbeitet:
siehe NSString Doku:

stringByAppendingString:
Returns a new string made by appending a given string to the receiver.

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

Parameters
aString
The string to append to the receiver. This value must not be nil.
Important: Raises an NSInvalidArgumentException if aString is nil.
Return Value
A new string made by appending aString to the receiver.

Discussion
This code excerpt, for example:

NSString *errorTag = @"Error: ";
NSString *errorString = @"premature end of file.";
NSString *errorMessage = [errorTag stringByAppendingString:errorString];
produces the string “Error: premature end of file.”.
 
Code:
NSString *test1 = @"hello";
NSString *test2 = @" ";
NSString *test3 = @"world";

NSstring *test4 = test1 +test3 + test2;
Dies funktioniert leider nicht :-(.

Warum das nicht geht, solltest Du aber schon sehen können: Du addierst einfach drei Pointervariablen. Dass diese drei Pointer auf NSString-Objekte verweisen, ändert nichts daran, dass Du Speicheradressen zu addieren versuchst. Da NSString eine Klasse ist, sollte klar sein, dass zur Stringkonkatenation eine Methode der Klasse NSString aufzurufen ist.
(Das sind vollkommen sprachunabhängige Grundkenntnisse, die man ohne Objective-C-Kenntnisse sofort erkennen sollte – sofern man die nötigen theoretischen (OOP-)Grundkenntnisse hat.)