• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Daten wollen nicht ins NSMutableArray

bginner

Ingrid Marie
Registriert
13.12.09
Beiträge
266
Die Fehlermeldung aus meinem letzten Post erscheint wenn ich dort
Code:
OldViewViewController.textField.text
stehen habe.

wenn ich über die Instanz auf mein TextField zugreife
Code:
oldViewObject.textField.text
gibt es keinen Fehler aber es tut sich auch nix
was mich vermuten lässt das ich nicht mein textField in der OldView erwische sondern
irgendetwas anderes. Denn wenn ich es über NSLog ausgeben lasse ist der Inhalt immer null.
Alle Attribute die in der OldView deklariert/definiert sind, sind in der NewView immer null.
Innerhalb der OldView sind die Elemente noch mit Werten belegt. Sobald es auf die NewView geht ist alles null.
 

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
Die Fehlermeldung aus meinem letzten Post erscheint wenn ich dort
Code:
OldViewViewController.textField.text
stehen habe.
Das wundert mich nicht. Das Klassenobjekt hat keine Properties und keine Instanzvariablen. Deshalb heißen die auch Instanzvariablen.

wenn ich über die Instanz auf mein TextField zugreife
Code:
oldViewObject.textField.text
gibt es keinen Fehler aber es tut sich auch nix
was mich vermuten lässt das ich nicht mein textField in der OldView erwische sondern
irgendetwas anderes.
Richtig bzw. Du erwischt schon die falsche OldViewViewController Instanz. Wenn ich mir noch mal den Code aus Post #29 anschaue, dann hast Du zwei OldViewViewController Instanzen, wobei die Instanz, die Du in NewView erzeugst, überhaupt keinen View kontrolliert (Du initialisierst ja nur mit init). Dementsprechend ist die textField Property dieser Instanz auch nil.

MacApple
 

bginner

Ingrid Marie
Registriert
13.12.09
Beiträge
266
Ja die NewView sieht mittlerweile etwas anders aus. habe viele Zeilen in mit Kommentar erstmalrausgenommen.
Die Zeilen in den Kommentaren hab ich weggelassen der übersichtlichkeit wegen.
momentan steht das drin.
Um mein oldViewObject mit dem OldView zu verknüpfen habe ich jetzt initWithNibName gemacht (siehe Code)
bundle hab ich auf nil stehen lassen, im meinem Buch haben die das auch so gelassen.
Aber das scheint mein Programm überhaupt nicht zu interessieren.
Es ist weiterhin alles nil.
Code:
- (void)viewDidLoad 
{
    [super viewDidLoad];
    oldViewObject = [[OldViewViewController alloc] initWithNibName:@"OldViewViewController" bundle:nil];
    
    [oldViewObject.listItems addObject:@"Madrid"];
    [oldViewObject.listItems addObject:@"London"];
    [oldViewObject.listItems addObject:@"Rom"];
    [oldViewObject.listItems addObject:@"Berlin"];
    [oldViewObject.listItems addObject:@"Paris"];
    [oldViewObject.listItems addObject:@"Moskau"];
    //[oldViewObject.listItems addObject:oldViewObject.textField.text];
    
    testArray = [[NSMutableArray alloc] init];
    [testArray addObject:@"testArray"];
//    NSLog(@"OldViewController ist: %@", OldViewViewController.textField.text);
    NSLog(@"TextField: %@", oldViewObject.textField.text);
    //NSLog(@"SaveText: %@", oldViewObject.saveText);
    NSLog(@"ListItems: %@", oldViewObject.listItems);
    NSLog(@"New Array: %@", testArray);
}
 

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
Um mein oldViewObject mit dem OldView zu verknüpfen habe ich jetzt initWithNibName gemacht (siehe Code)
Und Du meinst, damit wäre jetzt das Textfeld, das auf dem Bildschirm dargestellt wird, mit dem Outlet der Instanz, die Du hier erzeugst, verknüpft? Du erzeugst damit immer noch eine zweite Instanz!

Lade doch mal Dein Projekt hier hoch (build-Ordner löschen!). Nur mit der viewDidLoad Methode kommen wir hier nicht weiter.

MacApple
 

Poljpocket

Salvatico di Campascio
Registriert
07.01.07
Beiträge
432
Aber er kennt diese Attribute in der NewView obwohl die nur in der OldView definiert worden sind. das ist bestimmt nur noch ne Kleinigkeit.

Und du sagst, du verstehst was von Objektorientierter Programmierung. Da geht es ja genau darum, dass Klassen mit Attributen oder eben properties definiert sind und dann miteinander agieren. Das geht nur, wenn sie voneinander die Eigenschaften kennen... Klar kennt eine NewView die properties von OldView, weil du ja den header von OldView importierst...

Habe auch verschiedene Parameter für die propertys ausprobiert aber das macht die ganze Sache nur noch schlimmer.

Da steht in der Dokumentation genau und verständlich, was diese Parameter machen. Logisch, wird es nur noch schlimmer :).

Jedenfalls greife ich in der NewView auch nicht auf die Original ListItems zu und auf das TextField schonmal gar nicht.

Dann hast du in NewView bestimmt entweder gar kein Objekt referenziert oder einfach das Falsche. Vielleicht hast du das im IB verbunden, erstellst aber dann in der -init - Methode vom NewView ein neues, halt eben leeres und das ist dann das Falsche.

Sorry, aber: Lies jetzt endlich mal ein Wenig einführende Literatur oder poste mal dein GESAMTES Projekt (aber bitte OHNE build-Ordner).

Gruss ppocket
 

bginner

Ingrid Marie
Registriert
13.12.09
Beiträge
266
Ok Leute hier kommt das Projekt als Zip-File
Vielleicht könnt ihr mir ja helfen.
Wäre echt klasse.
 

Anhänge

  • OldView..zip
    26,3 KB · Aufrufe: 54

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
Mach mal folgende Änderungen.
In NewView.m die Zeile 30 auskommentieren.
In OldViewViewController.m nach der Zeile 20 fügst Du folgendes ein:
Code:
show.oldViewObject = self;
Dann überlege mal, warum es dann so funktioniert, wie Du es erwartet hast.

Wozu sollen die beiden Klassenmethoden setMyTextField: und getMyTextField gut sein? Ich empfehle weiterhin, Dir Grundlagen anzueignen.

MacApple
 

bginner

Ingrid Marie
Registriert
13.12.09
Beiträge
266
Wow, es funktioniert auf Anhieb. Ich habe es mir bisher nur kurz angesehen aber ich denke der Fehler war das ich ein neues OldViewViewController Objekt erzeugt habe und mich nicht auf das Objekt bezogen habe was schon existiert. Was ich nicht wusste war eben wie ich auf Objekte zugreife die schon existieren. was die neu eingefügten Zeilen im Detail bedeuten kann ich nachlesen.

Also an dieser Stelle bedanke ich mich recht herzlich für eure Zeit, Mühen und euren Aufwand den ihr für mein Problem investiert habt.
Eure Hilfe hat mich ein großes Stück weitergebracht.