#024 Cheddar: Quellen und Pfade (65:35 Minuten)

#024 Cheddar: Quellen und Pfade
Das neue Tab View aus der letzten Folge kriegt seine ersten Funktionalitäten! Wir zeigen in dieser Folge, wie man bei sich selbst klaut und viele Fehler machen kann - vor allem aber auch, wie man sie danach auch korrigiert. Ihr könnt dadurch lernen, was die Fehlerquellen sein können und wir haben dadurch gelernt, dass wir für überlange Folgen nicht gemacht sind... :-)

Die neuen Themen in dieser Folge:
  • das Erzeugen eines zusätzlichen Controllers innerhalb einer xib-Datei
  • zwei Controller per Outlet verbinden
  • NSOpenPanel (Datei-Öffnen-Dialog).

    Relevante Links zu den Themen in der Sendung:
  • #019: NSTableView mit Leben befüllen (TableView-Datasources und -Delegates)
  • #020 Cheddar: NSUserDefaults (initWithCoder, encodeWithCoder)
  • #021 Cheddar: Drag and Drop

    Ihr bekommt den Quellcode zu dieser Folge in unserem SVN-Repository direkt aus Xcode heraus unter "releases/episode_024", oder am Terminal mit:
    svn checkout https://cheddar1.svn.sourceforge.net/svnroot/cheddar1/releases/episode_024
    Mehr Infos zum Thema in den Artikeln Subversion: Quellcodes zu den Episoden direkt in Xcode und Subversion und Xcode!
    Trackbacks:
    http://www.mac-talk.eu/entwickler/71-videotutorials-zu-objective-c.html
    4 Kommentare | Permalink | Trackback-Info | Film in HD ansehen!

  • Anzeige / Partnerlink

    Kommentar hinzufügen

     
    Name:
    Email (optional):
    Text:
    Sicherheitscode:
    Bitte geben Sie hier die unten abgebildete 5-stellige Zahl aus dem Bild ein!
    Um die 1 besser von der 7 unterscheiden zu können, hat die 1 unten immer einen waagerechten Strich.

    4. Fabian am 23. Aug 2010, 04:43 Uhr

    Suuper Podcast! Macht Spaß zu lernen!

    Ich hab grad 2 Stunden nach einem Fehler gesucht und wollte meine Lösung allen anderen zur Verfügung stellen.

    PROBLEM: Man kann keine sourcePaths anlegen. Es wird einfach nichts gespeichert, obwohl auch der Vergleich mit dem SVN keine gravierenden Unterschiede bringt.

    LÖSUNG: "Alte" Einstellungen, die VOR Folge 24 erstellt wurden, enthalten kein sourcePath-Array. Da sie aber bereits vorhanden sind, werden sie nicht mit einem leeren Array initialisiert. [self setupInstanceVariables] innerhalb initWithCoder einzufügen bringt auch nichts, weil beim Entpacken der Einstellungen alles überschrieben wird.

    Einstellungen, die man grad neu erstellt hat, gehen problemlos. Die Lösung wäre also auch auch gewesen, einfach alle Einstellungen zu löschen und neue zu erstellen. Aaaaber: Wer kann das ahnen?

    SO GEHT ES:
    Nach dem Entpacken des SyncItems muss man überprüfen, ob sourcePaths NULL ist. Dann muss ein leeres Array erstellt werden (NULL und ein leeres Array sind unterschiedlich). Blöderweise meckert das Programm nicht, wenn man einen SourcePath hinzufügen will, wenn kein Array vorhanden ist. Das (nicht vorhandene) Array speichert einfach nichts. Seeehr komisch. Wie gesagt: 2 Stunden Sucherei...

    In SyncItems.m -> initWithCoder
    ...
    self.sourcePaths = [aDecoder decodeObjectForKey:@"sourcePaths"];
    if (self.sourcePaths == NULL) {
    self.sourcePaths = [NSMutableArray array];
    }
    ...

    Sehr praktisch bei meiner Suche war übrigens die Funktion NSLog. Damit lassen sich während des Ablaufs Variablen in die Konsole (Debug View) ausgeben.

    NSLog(@"syncItem:initWithCoder: sourcePaths: %@",self.sourcePaths);

    3. ingo am 7. Jan 2010, 09:36 Uhr

    @Lailo: Danke! ;)

    @sams:
    Das Aufrufen als sogenanntes "Sheet" unterscheidet sich in 10.6 erheblich von der API in 10.5 oder früher. Wir werden darauf in einer gesonderten Folge eingehen!

    2. Lailo am 7. Jan 2010, 00:48 Uhr

    Ich finde diese Sache von euch einfach genial. Ich habe es schon mit vielen Büchern probiert diese Sprache zu lernen wobei es mir misslungen ist.

    Mach weiter so Ich kann es kaum erwarten mehr von euch zu sehen/hören.

    Vielen Dank für dieses Angebot.

    1. sams am 4. Jan 2010, 17:35 Uhr

    Hi, Leute...
    Super Podcast!! Aber ich bin leider Gewohnt, dass dieses OpenPanel aus der Leiste herausgefahren kommt??? Trotzdem Klasse :)