• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

Variablenzugriff auf fremde Klasse auf dessen gespeicherten Wert = FAIL !?

Angel3DWin

Gala
Registriert
10.03.10
Beiträge
50
Hallo,

ich bin langsam am verzweifeln :(

Ich habe in einer Klasse eine Stringvariable erzeugt, die den Datenbankpfad (+DB-Namen) von meiner SQLite DB speichern soll.

Nun versuche ich aus einer anderen Klasse heraus auf den Inhalt dieser Variable (also den DB-Pfad) zu zugreifen. Ich habe den .h importiert, erzeuge von der Klasse ein Object und über das Object greife ich auf die Variable zu.

Diese wird ja auch angeboten, aber wenn ich dann versuche, bei meinem SQL Befehl den Pfad darüber bekannt zu machen, schmiert alles ab. Im Consolenfenster kam immer wieder EXC_BAD_ACCESS.

Nun, ich hatte glaube gar nichts geändert, habe ich die App im Simulator noch mal gestartet und den Wert per Console ausgeben lassen, und komischerweise schmierte es auf einmal nicht ab, k.a. warum:

CFBundleDevelopmentRegion

Das kam nun als Wert, nur haut irgendwie auch nicht hin. Allerdings hat er ohne Meckern das insert ausgeführt, allerdings k.a. ob die Daten jetzt wirklich in der DB sind.

Das SQLite Thema ist echt zum kotzen, nehme der Einfachheit halber schon den Wrapper FMDB, aber trotzdem irgendwie nervig.

Den Datenbankpfad habe ich eine proberty zugewiesen. Muss da etwas bestimmtes stehen, damit man den Wert in einer anderen Klasse "sehen" kann?

Danke im Voraus.

Lg Angel
 
beschäftige dich lieber erstmal explizit mit dem Thema objektorientierte Programmierung.

Ich denke, dass du hier mit 2 verschiedenen Instanzen eines Objektes arbeitest und diese kennen die Daten des jeweils anderen nicht, auch wenn sie von der selben Klasse kommen.
 
Ja wie kann ich denn an die Daten des Objektes von der anderen Klasse kommen? Mehr will ich doch gar nicht wissen.

Bei property habe ich copy mit angegeben, der Wert bzw. die Daten des Objekties soll ja nicht verändert werden.

Nebenbei: Ich habe ursprünglich Java gelernt, OOP ist also ansich nichts neues für mich, nur gibt es zwischen Objective-C und Java gewaltige Unterschiede!

Bei Java weiß ich noch, das man mit this. die Daten des Objektes in die Klassenvariable gespeichert hat. Hier bei Objective-C habe ich es auch schon mit self. versucht, ändert aber auch nix.
 
JAVA ist keine allgemeine Referenz für OOP. Das wird zum Teil sehr unterschiedlich implementiert und interpretiert. ECMAscript hat z.B. gar keine Klassen. Eine Klassenvariable gibt es hier nicht. Man agiert hier mit Objekten die sich Nachrichten senden. Deren Membervariablen erreicht man über Accesoren. Das ist das OOP-Paradigma der Datenkapselung.
 
Zuletzt bearbeitet:
Hallo,

es muss vielleicht nichts zwingend mit dieser Variable zu tun haben. Dieser Fehler kommt beispielsweise auch, wenn man einen Instance-Counter mit release runterzählt, obwohl dieser schon auf 0 steht.

Gruß

Sascha
 
Ja wie kann ich denn an die Daten des Objektes von der anderen Klasse kommen? Mehr will ich doch gar nicht wissen.

Also von bei der Klasse aus der du die Daten hast (den DB-Pfad) ich nenne diese mal DBClass und die andere MemberClass.
In der DBClass legst du ganz normal die Objekte an + @property +@synthezise das ist ja dann erledigt.

Nun wechselst du zur MemberClass: hier hast du zwei Möglichkeiten
a) du importierst im HeaderFile die DBClass und erzeugst ein Objekt dieser: also DBClass* dbPath; legst zusätzlich noch @property und @synthesize an und schreibt im Implementierungsfile der MemberClass eben: dpPath = [[DBClass alloc] initWithNib:@"DBClass" bundel:nil]; nun kannst du über die dotNotation auf die PfadVariable in DBClass zugreifen: neueVar.text = dpPath.meineDBPfadVar;

b) du importierst de Klasse DBClass in der .m-Datei von Memberclass und machst dann dass wie bei a) beschrieben.
 
Wie wärs mit Code posten? Im Nebel rumstochern bringt doch überhaupt nichts...