C ObjC: Ein zentrales Array für alle Klassen

Kerim10

Lieutenant
Registriert
Juli 2006
Beiträge
739
Hallo zusammen,
ich bin relativ neu in der XCode Programmierung, habe aber schon viel gelesen und auch geschafft.
Aber es will mir nicht gelingen ein globales Array zu erstellen :/
Habe z.B. 3 Tabellen auf 3 Views (3 Klassen) und möchte jetzt, ähnlich wie bei einer Bestellung, Elemente aus diesen Tabellen auswählen und in ein zentrales Array schreiben.

Das Auswählen der Elemente (inklusive Popup) klappt wunderbar. Es scheitert nur an dem klassenübergreifenden Array...

Habe schon gelesen, man muss es in die AppDelegate schreiben, in den Klassen importieren und dann aufrufen, etwa mit:

Code:
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    abc= appDelegate.myGlobalArray;
nur kommt bei mir folgender Fehler: "unrecognized selector sent to instance"


Kann mir jemand helfen? :) Das muss doch auch einfacher gehen
 
Also generell hast du schon einmal Recht.
Du solltest das Array auf jeden Fall durch Properties erzeugen lassen. Also in deiner AppDelegate.h
Code:
@property (strong, nonatomic) NSMutableArray *myGlobalArray;
Dann in der .m direkt unter @implementation machst du ein @synthesize myGlobalArray;
Dadurch erzeugt dir Xcode automatisch die Getter / Setter Methoden im Hintergrund.

In der jeweiligen Klasse in der du nun das Array brauchst, machst du in der .m ein #import "Appdelegate.h"
und dann wie du schon richtig geschrieben hast:
Code:
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    meinLokalesArray = appDelegate.myGlobalArray;

Die Variable meinLokalesArray musst du vorher natuerlich auch anlegen. Kannst du auch mit properties machen, oder einfach so wenn sie private sein soll.

Ich denke das du keine Properties benutzt hast und es deswegen keine Getter Methode fuer dein Array gab. Du kannst die auch selber programmieren wenn du das willst.

Code:
- (NSArray*) meinArray
{
return meinArray;
}

Properties sind aber zu empfehlen.

Achja mein Code oben ist schon fuer ARC ausgelegt, falls du noch nicht damit arbeitest benutz fuer die Properties als Attribute (nonatomic, retain), bzw. wenn du gleichzeitig von mehreren Klassen auf das Array zugreift frage ich mich gerade ob du nicht atomic nehmen solltest...Aber lass erstmal nonatomic, das sollte schon klappen.
 
Zurück
Oben