Von PHP zu Objective-C: Datentypen Teil 1

Mit diesem Post möchte ich euch eine Übersicht geben, wie sich die Initialisierung von verschiedenen Datentypen in PHP und Objective-C unterscheiden.

Damit solltet ihr in der Lage sein, bereits vorhandenes Wissen was Datentypen in PHP angeht, in Objective-C zu “übersetzten”.

Strings

Bei Strings wird in Objective-C, wie auch bei Arrays, zwischen einem NSString und einem NSMutableString unterschieden. Eine Variable vom Typ NSString kann nach der Initialisierung nicht mehr verändert werden. Dafür muss eine Variable vom Typ NSMutableString erstellt werden. Diese kann im späteren Programmverlauf auch wieder geändert werden.
PHP:
$myString = "foobar";

Objective-C:
NSString *myString = @"foobar";

Arrays

Bei Arrays gibt es eine wichtige Besonderheit zu beachten! Während wir in PHP einfach einen Array in eine Variable schreiben und diesen dann später noch nach belieben modifizieren können (Elemente löschen, Elemente hinzufügen), müssen wir in Objective-C zwischen zwei verschiedenen Arten des Arrays unterscheiden – dem NSArray und dem NSMutableArray. Den NSArray kann man nach der Initialisierung nicht mehr verändern! Alle Objekte die das Array beinhalten soll müssen also beim initialisieren übergegeben werden. Wenn man ein Array noch verändern möchte muss man also zum NSMutableArray greifen.

PHP:
$myArray = array('foo', 'bar');

Objective-C:
NSArray *myArray = [[NSArray alloc] initWithObjects:@"foo",
@"bar", nil];
NSMutableArray *myArray = [[NSMutableArray alloc] init];
[myArray addObject:@"foo"];
[myArray addObject:@"bar"];

Beim NSArray ist immer zu beachten, das wir das Ende unserer Wertekette mit einem “nil” terminieren müssen.

Assoziatives Array/stdClass-Object

Mit einem assoziativen Array kann man den Schlüssel eines Wertes im Array auch als Text definieren. In einem normalen Array sind die Schlüssel immer numerisch. Vergleichbar in Objective-C ist hier das NSDictionary und das NSMutableDictionary (Mutable kennen wir ja jetzt von den Arrays ;-) ). Auch noch in Objective-C beachten: Bei einem NSDictionary wird nicht key=value definiert, sondern value=key!
PHP:
$myArray = array('foo' => 'bar');

Objective-C:
NSDictionary *myDictionary = [[NSDictionary alloc] initWithObjectsAndKey:@"bar", @"foo", nil];
NSMutableDictionary *myDictionary = [[NSDictionary alloc] init];
[myDictionary setObject:@"bar" forKey:@"foo"];

So, für den ersten Teil war es das auch schon. Ich hoffe es hat euch einen guten Überblick gegeben, wie man Strings, Arrays und Assoziative Arrays in Objective-C umsetzten kann. Zweiter Teil folgt demnächst und ich freue mich natürlich über Kommentare, Fragen und Anregungen.

Switch to our mobile site