• 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

Daten wollen nicht ins NSMutableArray

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.
 
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
 
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);
}
 
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
 
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
 
Ok Leute hier kommt das Projekt als Zip-File
Vielleicht könnt ihr mir ja helfen.
Wäre echt klasse.
 

Anhänge

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
 
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.