1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Programmieren mit XCode

Dieses Thema im Forum "OS X-Developer" wurde erstellt von severus, 03.06.08.

  1. severus

    severus Gast

    Mahlzeit =),
    ich programmiere schon seit einigen Jahren (Java, c++, c#) und skripte (php, usw).
    da ich mir vor einiger zeit einen mac gekauft hab möchte ich auch nun was mac fähiges progammieren, allerdings nicht in java.
    wie fang ich denn am besten an? also wichtig ist mir eine einführung in die interfaceprogrammierung mit xcode cocoa objective c.
    Grundsätzlich brauche ich nichts was mit oop oder ähnliches erklärt da ich mich damit eigentlich sehr gut auskenne.
    Ich hab auch schon hier im Forum gesucht aber das meiste was ich gefunden hab ist eher alt (mitte 2006) das heißt es ist sicher nicht mehr up to date bzw. gibt es sogar einige der links nichtmehr.
    Ich hoffe ihr könnt mir dabei weiterhelfen.
    Liebe Grüße
    Severus
     
  2. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    First things first: It's Xcode, not xCode or XCode or x-code. Remember that now.
    -- Chris Espinosa

    Tutorials
    Buch

    Alex
     
  3. alonzo

    alonzo Auralia

    Dabei seit:
    17.03.07
    Beiträge:
    203
    #3 alonzo, 03.06.08
    Zuletzt bearbeitet: 03.06.08
  4. Amin Negm-Awad

    Amin Negm-Awad Süsser Pfaffenapfel

    Dabei seit:
    01.03.07
    Beiträge:
    665
    Hiervon würde ich dringend abraten.
     
  5. Nikkita

    Nikkita Gast

    Wieso abraten?

    Ich wollte heute das durch gehen.
     
  6. Amin Negm-Awad

    Amin Negm-Awad Süsser Pfaffenapfel

    Dabei seit:
    01.03.07
    Beiträge:
    665
    1.
    Hat er keine Ahnung von
    [ ] C++
    [ ] Objective-C
    [ ] Beidem

    2.
    Erzeugung von Klassen im IB. (Soll man nicht mehr.)

    3.
    Kleingeschriebene Klassennamen.

    4.
    Verwendung deutscher Wörter als Bezeichner.



    Alles typische Anfängerfehler, die man daher keinesfalls einem Anfänger beibringen sollte. Mir erscheint das überhaupt so, dass er selbst gerade mit Objective-C angefangen hat und sozusagen seinen Lernerfolg bloggt. Das wird ihm noch viel Arbeit bereiten, wenn er weiter voranschreitet und bemerkt …
     
  7. Nikkita

    Nikkita Gast

    Ah ok danke dir :)
     
  8. cyphorious

    cyphorious Braeburn

    Dabei seit:
    11.05.08
    Beiträge:
    46
    das ist mir überhaupt in letzter zeit aufgefallen, dass sogenannte "lehrbücher" immer schlechter werden - egal in welchen programmiersprachen. was die autorInnen da teilweise lehren und präsentieren lässt mir die gänsehaut auftreiben. z.b. beenden einer endlosschleife, die aus einem file ausliest mittels einer exception - was denken sich die leute, wozu es hasNext() (oder ähnliche methoden) gibt?... da stellts mir die nackenhaare auf.
     
  9. Amin Negm-Awad

    Amin Negm-Awad Süsser Pfaffenapfel

    Dabei seit:
    01.03.07
    Beiträge:
    665
    Früher war alles besser!

    Nein, ernsthaft: Der Markt verlangt nach Neuem. Ich höre ständig: "Wann kommt die nächste Auflage." Wenn ich die E-Mails alle ausdrucken würde, hätten mich die Papierkosten in den Ruin getrieben.

    Es sind die Leser, die "Mach's mir und mach's mir schnell!" wollen. Kaum einer nimmt sich noch die Muße, etwas wirklich zu lesen.

    Und ja, solche Beispiele gibt es immer. Es gab mal ein Cocoa-Buch, da wurde schmerzfrei -dealloc aufgerufen. Und du findest auch in guten Büchern teilweise merkwürdige Sachen.

    Wenn sich dann jemand über _namee anstelle von _name beschwert, grinse ich ein wenig … *Das* sind die zentralen Fragen der Softwareentwicklung.
     
  10. kybdf2

    kybdf2 Rheinischer Winterrambour

    Dabei seit:
    10.02.06
    Beiträge:
    923
    Hi Amin!

    Habe mir mal dein Tutorial "Absolute Beginner" angesehen und bin das mal durchgegangen. Habe früher mal Java programmiert und bin mit dem Tutorial sehr gut zurecht gekommen.
    Eine Frage habe ich allerdings: Ich wollte ein ähnliches Programm schreiben, was eine Tabelle als Grundlage hat und die erste Reihe der Tabelle soll eine laufende Nummer sein. Ich habe bereits ein TableView mit 11 Reihen und diese Reihen jeweils per ArrayController mit dem "Model" verbunden. Allerdings steh ich da gerade auf dem Schlauch.
    Ich habe in meiner Controller Klasse ein neues IBOutlet erstellt und dieses mit dem ArrayController verbunden.
    Ich dachte, ich könnte dann sowas wie
    Code:
    [arrayController.arrangedObjects.nummer++];
    machen, geht aber nicht...
     
  11. MacApple

    MacApple Lord Grosvenor

    Dabei seit:
    05.01.04
    Beiträge:
    3.470
    Das geht nicht, weil Objective-C kein Java ist.;)

    Die Syntax von Objective-C ist
    Code:
    [object message];
    In Objective-C 2.0 gibt es neu die Punktsyntax für den "Aufruf" von Accessoren.
    Code:
    id anObject = object.accessorMessage; // Getter
    object.setAccessorMessage = anObject; // Setter
    Diese Punktsyntax ist gleichbedeutend mit
    Code:
    id anObject = [object accessorMessage]; // Getter
    [object setAccessorMessage:anObject]; // Setter
    Was Du versuchst ist also eine Methode zu incrementieren. Das kann nicht gehen.

    MacApple
     
  12. Amin Negm-Awad

    Amin Negm-Awad Süsser Pfaffenapfel

    Dabei seit:
    01.03.07
    Beiträge:
    665
    Ich nehme an, dass du mit Reihen die Spalten meinst?!

    Nein, die arrangedObjects sind ja ein Array. Ein Array hat aber kein Attribut nummer. Mutmaßlich meinst du:
    Code:
    for( id item in arrayController.arrangedObjects ) {
       item.nummer++;
    }
     
  13. Amin Negm-Awad

    Amin Negm-Awad Süsser Pfaffenapfel

    Dabei seit:
    01.03.07
    Beiträge:
    665
    Unprobiert, aber muss gehen:
    entity.attribute++ muss eigentlich gehen, weil es entity.attribute += 1 entspricht, was entity.attribute = entity.attribute + 1 entspricht, was offensichtlich geht. Ich kann es jetzt aber gerade nicht nachprüfen (Tiger).

    Er hat einen anderen Fehler.
     
  14. MacApple

    MacApple Lord Grosvenor

    Dabei seit:
    05.01.04
    Beiträge:
    3.470
    Jetzt wo Du das sagst, klingt logisch und funktioniert auch (habe es gerade getestet). Das incrementiert sogar Zeiger auf Objekte!o_O

    MacApple
     
  15. Amin Negm-Awad

    Amin Negm-Awad Süsser Pfaffenapfel

    Dabei seit:
    01.03.07
    Beiträge:
    665
    So ganz kann Objective-C seine Herkunft nicht verbergen,

    Amin Negm-Awad
    Präsident, Vizepräsident und Kassenwart des Vereins zur Ächtung der Zeigerarithmetik e. V.
     
  16. kybdf2

    kybdf2 Rheinischer Winterrambour

    Dabei seit:
    10.02.06
    Beiträge:
    923
    Danke erstmal für die Antworten. Aber ich weiß immer noch nicht, wo der Fehler liegt ;)
    Gibt es denn eigentlich keine Möglichkeit, das bei dem Model direkt einzustellen, dass jeder Neueintrag das Attribut nummer um 1 erhöht?

    Und ja, mit Reihen meinte ich Spalten...^^

    EDIT:

    Wenn ich
    Code:
    for (id item in arrayController.arrangedObjects){item.nummer++;}
    nehme, dann erhalte ich:
    Code:
    error: request for member 'nummer' in something not a structure or union
    das gleiche erhielt ich allerdings vorher, wo ich es auf die andere Weise versucht hatte, auch.
     
  17. Amin Negm-Awad

    Amin Negm-Awad Süsser Pfaffenapfel

    Dabei seit:
    01.03.07
    Beiträge:
    665
    Du musst dem Item eine Klasse geben, die die Accessoren implementiert oder KVC verwenden.
     
  18. kybdf2

    kybdf2 Rheinischer Winterrambour

    Dabei seit:
    10.02.06
    Beiträge:
    923
    Da steh ich jetzt schon wieder auf dem Schlauch. :)
    Ich hab mir zu KVC mal Beispiele angesehen. Es scheint das zu bewerkstelligen, was ich machen will, nämlich auf einzelne Werte aus dem Model aus dem Quellcode heraus zugreifen und diese verändern, in dem Fall die laufende Nummer um eins erhöhen.
    Jedoch kapier ich gerade nicht ganz, wie ich das verwirklichen muss.
    Ich wollte mir für den Anfang erstmal den aktuellen Wert der aktiven Zeile rausziehen, mit
    Code:
    float f = [arrayController.selection valueForKey:nummer];
    geht aber wieder nicht
     
  19. Amin Negm-Awad

    Amin Negm-Awad Süsser Pfaffenapfel

    Dabei seit:
    01.03.07
    Beiträge:
    665
    Scherzkeks. Der Witz bei KVC ist ja, dass der Name der Eigenschaft als String angegeben wird:
    Code:
    float f = [arrayController.selection valueForKey:@"nummer"];
    Die Eigenschaft muss freilich in Core-Data modelliert (vorhanden) sein.
     
  20. kybdf2

    kybdf2 Rheinischer Winterrambour

    Dabei seit:
    10.02.06
    Beiträge:
    923
    Danke! Das hat mich schonmal ein großes Stück weitergebracht. Sorry, wenn ich hier zum "Scherkeks" werde, aber ich befasse mich erst seit kurzem mit dem Thema und bin anscheinend gerade leicht überfordert o_O
    Ich bekomme jetzt allerdings die Meldung
    Code:
    error: incompatible types in assignment"
    was ich nicht ganz verstehe, da die Eigenschaft "nummer" im Core Data Model als Float vorhanden ist.
     

Diese Seite empfehlen