• Wieder einmal haben uns unsere Apfeltalker tolle Fotos zur Abstimmung eingesandt. Welches ist Euer Favorit? Stimmt mit ab! Hier geht es zur Abstimmung --> Klick
  • Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> Klick

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.)