• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> 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
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
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.
 

Angel3DWin

Gala
Registriert
10.03.10
Beiträge
50
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.
 

Pii

Rheinischer Krummstiel
Registriert
25.06.07
Beiträge
383
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:

sashs

James Grieve
Registriert
23.03.10
Beiträge
133
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
 

Miralem23

Kaiser Wilhelm
Registriert
24.11.08
Beiträge
178
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:mad:"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.
 

Poljpocket

Salvatico di Campascio
Registriert
07.01.07
Beiträge
432
Wie wärs mit Code posten? Im Nebel rumstochern bringt doch überhaupt nichts...