Programmieren mit XCode

  • Ersteller severus
  • Erstellt am

sumpfmonsterjunior

Morgenduft
Registriert
17.03.05
Beiträge
167
Klinke mich auch nochmal ein...

Von Deiner Idee der Nummern (insbesondere ausgewählte Zeile+1) würde ich abraten...
Bilde doch einen Primärschlüssel aus Datum und Zeit des Abflugs.

Nochmal: CoreData ist keine Datenbank

"Nummer einer Zeile = Nummer der Vorgängerzeile + 1"

Es gibt keine Zeilen im Modell, sondern nur eine Ansammlung von Entities.
Nur weil Dir der ArrayController die Flüge abzählbar liefert, sagt das nichts über die interne Reihenfolge aus.

Meiner Meinung nach gehört das auch nicht ins Modell, allenfalls über die Abflugzeiten .
Um eine wie auch immer geartete Filterung einzubauen lies Dir das hier mal durch:

http://developer.apple.com/document...ching.html#//apple_ref/doc/uid/TP40002484-SW1

Suche geht ganz einfach mit CoreData, da musst Du nicht irgendwelche kruden Nummern abzählen, auch hierfür gibts ein sehr anschauliches Beispiel im Video von Apple (Livesearch).

Vielleicht hilft Dir auch http://www.cocoacast.com/ weiter.

Gruß, SMJ
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Amin, wie hast du eigentlich begonnen zu Programmieren, gibts da ne Geschichte irgendwo zum lesen? :innocent:
Wäre eigentlich ein Blogeintrag wert – wenn ich es noch exakt zusammen bekäme.

Angefangen habe ich vor etwa 25 Jahren mit ersten Experimenten auf einem Colour Genie eines Freundes und kaufte mir einen Apple ][. Klassisch: Basic, Assembler, Pascal, C, C++
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Klinke mich auch nochmal ein...

Von Deiner Idee der Nummern (insbesondere ausgewählte Zeile+1) würde ich abraten...
Bilde doch einen Primärschlüssel aus Datum und Zeit des Abflugs.

Ich glaube, er will keinen Primärschlussel. Er will einfach Daten aus der realen Welt abbilden, in diesem Fall eine laufende Nummer (jajaja, in der realen Welt ist das auch ein Primärschlüssel, aber schwamm drüber)

SMJ, die Idee mit "awakeFromInsert" finde ich übrigens gar nicht so schlecht.

@kybdf2: Wenn Du willst kann ich da auch mal reinkucken, dazu müsstest Du mich aber in den Sourcecode kucken lassen. Support kann in diesem Fall auch in einer Flugplatzführung für meinen Sohn und mich erfogen :D

Alex
 

kybdf2

Rheinischer Winterrambour
Registriert
10.02.06
Beiträge
923
Okay, war auch eindeutig überreagiert von mir. Sorry & Schwamm drüber.

Du kommst ja auch schon voran, stimmt. Der Anfang ist das Schwierigste. Arbeite dich mal weiter durch. Ich helfe ja auch gerne weiter. Mit der Zeit erwirbst du nicht nur mehr Wissen, sondern auch Verständnis, dir selbst Wissen zu beschaffen.

ja, am Anfang hat man einfach keine Karte von den Waldwegen. Sorry!

Kein Ding, man kann ja mal mit der Geduld am Ende sein. Passiert mir ja auch schonmal ;)

Klinke mich auch nochmal ein...

Von Deiner Idee der Nummern (insbesondere ausgewählte Zeile+1) würde ich abraten...
Bilde doch einen Primärschlüssel aus Datum und Zeit des Abflugs.

Nochmal: CoreData ist keine Datenbank

"Nummer einer Zeile = Nummer der Vorgängerzeile + 1"

Es gibt keine Zeilen im Modell, sondern nur eine Ansammlung von Entities.
Nur weil Dir der ArrayController die Flüge abzählbar liefert, sagt das nichts über die interne Reihenfolge aus.

Meiner Meinung nach gehört das auch nicht ins Modell, allenfalls über die Abflugzeiten .
Um eine wie auch immer geartete Filterung einzubauen lies Dir das hier mal durch:

http://developer.apple.com/document...ching.html#//apple_ref/doc/uid/TP40002484-SW1

Suche geht ganz einfach mit CoreData, da musst Du nicht irgendwelche kruden Nummern abzählen, auch hierfür gibts ein sehr anschauliches Beispiel im Video von Apple (Livesearch).

Vielleicht hilft Dir auch http://www.cocoacast.com/ weiter.

Gruß, SMJ

Ich weiß schon, dass die interne Reihenfolge eine andere ist. Jedoch interessiert mich diese eigentlich nicht (sollte sie?), sondern die Reihenfolge der Zeilen in der Tabelle.

Ich glaube, er will keinen Primärschlussel. Er will einfach Daten aus der realen Welt abbilden, in diesem Fall eine laufende Nummer (jajaja, in der realen Welt ist das auch ein Primärschlüssel, aber schwamm drüber)

SMJ, die Idee mit "awakeFromInsert" finde ich übrigens gar nicht so schlecht.

@kybdf2: Wenn Du willst kann ich da auch mal reinkucken, dazu müsstest Du mich aber in den Sourcecode kucken lassen. Support kann in diesem Fall auch in einer Flugplatzführung für meinen Sohn und mich erfogen :D

Alex


Genau so ist es. Es gibt bereits ein Programm für Windows (wohl mit Visual Basic geschrieben), allerdings etwas veraltet. Das hat in der ersten Spalte auch eine laufende Nummer und die Flugzeit errechnet es z.B. auch automatisch aus Start- und Landezeit. Es hat also quasi fast schon tabellenkalkulatorische Eigenschaften (wenn man das so nennt). Das muss man doch auf dem Mac auch hinkriegen können.
Die Idee mit awakeFromInsert fand ich auch gut und nutze sie momentan auch, um automatisch in jeder neu angelegten Zeile das aktuelle Datum einzutragen.
Eine Flugplatzführung kann ich dir gerne anbieten, jedoch wird das wohl erst nächstes Jahr möglich sein, da ich ab nächste Woche erstmal für längere Zeit im Ausland bin. Werde dort natürlich auch weiter programmieren und mich weiterhin hier melden.
Quelltext kann ich dir auch gerne mal zuschicken, aber der benötigt erst nochmal etwas Feinschliff. ;)
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Kein Ding, man kann ja mal mit der Geduld am Ende sein. Passiert mir ja auch schonmal ;)



Ich weiß schon, dass die interne Reihenfolge eine andere ist. Jedoch interessiert mich diese eigentlich nicht (sollte sie?), sondern die Reihenfolge der Zeilen in der Tabelle.




Genau so ist es. Es gibt bereits ein Programm für Windows (wohl mit Visual Basic geschrieben), allerdings etwas veraltet. Das hat in der ersten Spalte auch eine laufende Nummer und die Flugzeit errechnet es z.B. auch automatisch aus Start- und Landezeit. Es hat also quasi fast schon tabellenkalkulatorische Eigenschaften (wenn man das so nennt). Das muss man doch auf dem Mac auch hinkriegen können.
Das ist eine Frage des Modalverbes: Können oder wollen?

Was soll denn der Vorteil sein?
 

sumpfmonsterjunior

Morgenduft
Registriert
17.03.05
Beiträge
167
Die Reihenfolge der Einträge in der Tabelle kann von allem Möglichen abhängen, wenn Du eine "Livesearch"-Funktion ala Spotlight oder iTunes einbauen willst (was mit CoreData simpelst ist), dann können EInträge fehlen, ebenso, wenn ein Flug gelöscht wird (und Du dann z.B Flug Nr 1,2,4,5,8,9,10 hast). Ich denke das verwirrt den Nichtprogrammier. Die Lösung wäre eine manuelle Neuindizierung, womit Du Dich aber um die Eleganz bringst, die Cocoa DIr anbietet - ohne Not für mein Dafürhalten...

Alternativ kannst Du dem NSTableView auch sagen (im IB), dass er immer nach Abflugzeit sortieren soll (nichts anderes wird ja mit Lfd-Nr modelliert).

Nichtsdestotrotz will ich hier nicht immer nachhaken...Du kennst die Anforderungen besser als ich.

Beste Grüße, SMJ
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
ebenso, wenn ein Flug gelöscht wird (und Du dann z.B Flug Nr 1,2,4,5,8,9,10 hast)
Wie soll denn ein Flug gelöscht werden? Du hast entweder zu viele Stephen King Bücher gelesen, oder doch zu stark den "Programmiererblick".

Ein Flug kann nicht gelöscht werden (jajaja, ein "Undo" für einmalige Fehleingabe wollen wir mal zulassen).

Dein Hinweis auf die Sortierung ist richtig, aber — ich hoffe, ich habe das richtig verstanden — die Flugnummer ist einfach eine Eigenschaft eines Flugs. So wie die Uhrzeit etc.

Es ist vielleicht einfacher, wenn ihr Euch die Flugnummern abstrakt vorstellt — die laufende Nummerierung ist hier nur eine Arbeitserleichterung für den Benutzer.
Stellt Euch statt 1, 2, 3 einfach LH455, UA901 und LY358 vor.

Schöne Woche noch!

Alex
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Der Anbieter des Fluges kann diesen Absagen, weil er nicht genügend Kunden hat …

Das ist aber gleichgültig, weil solche Lücken ohnehin im -awakeFromInsert entstehen können, wie ich beschrieb.
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Der Anbieter des Fluges kann diesen Absagen, weil er nicht genügend Kunden hat …

Ich gehe davon aus, dass dieser Flug dann nicht gelöscht, sondern mit einem "Cancelled" versehen wird. Aber das kann nur der TE mit seinem Domänenwissen sagen.

Denn in einem Fahrtenbuch (elektronisch oder handschriftlich) darf ja auch nichts gelöscht werden, so stellte ich mir das mit dem "Flugbuch" vor.

Alex
 

sumpfmonsterjunior

Morgenduft
Registriert
17.03.05
Beiträge
167
Wie soll denn ein Flug gelöscht werden? Du hast entweder zu viele Stephen King Bücher gelesen, oder doch zu stark den "Programmiererblick".

Hi below,

ja, da hast Du wohl recht, aber die Methode: "letzte Zeile+1" ist doch etwas zu sehr Kategorie schmutziger Hack. Steven King Bücher habe ich leider noch keins gelesen...

Natürlich bliebe die Möglichkeit, einfach das Feld Lfd-Nr readonly im View zu machen, aber irgendwie riecht mir das trotzdem zu sehr nach "Fischualbäsick" und schlechtem UI-Design.

Dir auch ne schöne Woche, beste Grüße

SMJ
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Ach, ich find die meisten Sachen von Stephen King gar nicht so gut. Aber der würde auch Flüge löschen, die schon passiert sind ;)

Alex
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
[…]Natürlich bliebe die Möglichkeit, einfach das Feld Lfd-Nr readonly im View zu machen, aber irgendwie riecht mir das trotzdem zu sehr nach "Fischualbäsick" und schlechtem UI-Design.[…]
Das ist es sogar ganz gewiss. Diese Information ist schlicht völlig wertlos, da es sich offenkundig um einen Mini-Flughafen handelt. Wenn dort zwei Flüge gleichzeitig starten, gibt es gewiss ganz andere Probleme. Dazu gab es in den 70ern supi Katastrophenfilme.

Es landet einfach eine wertlose Information auf dem Schirm, die einfach nur Platz verbraucht und den Nutzer "verwirrt" – ohne jeden Grund. Dann darf er die jetzt auch noch nicht ändern …

*Schulterzuck* Offenkundig will sich da jemand einen Primärindex schustern, der zum einen systemwidrig ist, zum anderen keine Funktionalität hat. Wenn's schee macht …
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
*Schulterzuck* Offenkundig will sich da jemand einen Primärindex schustern, der zum einen systemwidrig ist, zum anderen keine Funktionalität hat. Wenn's schee macht …

Mini Flughafen hin oder her. Ein Anwalt bezeichnet ein Gesetz auch nicht nach "Das erste auf Seite 435 in der 3. Auflage von CH Beck", sondern mit dem Paragraphen ;)

Ich habe das Domänenwissen des TE nicht, aber es kann gut sein, das die Flugnummer (unsinnig oder nicht) sogar vorgeschrieben ist.

Alex
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Mini Flughafen hin oder her. Ein Anwalt bezeichnet ein Gesetz auch nicht nach "Das erste auf Seite 435 in der 3. Auflage von CH Beck", sondern mit dem Paragraphen ;)
Weil es keine andere Identifikationsmöglichkeit gibt. Und er bezeichnet übrigens Paragraphen nicht mit einer fortlaufenden Nummer. -> Buchstabenparagraphen (Nein, 312c ist keine hexadezimale Darstellung).

Ich habe das Domänenwissen des TE nicht, aber es kann gut sein, das die Flugnummer (unsinnig oder nicht) sogar vorgeschrieben ist.
Ja, wir können nur zum Sinn schreiben,nicht zu seinen Vorschriften.
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Schon klar, das mit den Paragraphen war ein blöder Vergleich.

Aber auch bei kleinen Geschäften will das FInanzamt durchnummerierte Rechnungen. Denen kannst Du nicht erzählen, dass das ein unsinniger Primärschlüssel ist ;)

Alex
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Schon klar, das mit den Paragraphen war ein blöder Vergleich.

Aber auch bei kleinen Geschäften will das FInanzamt durchnummerierte Rechnungen. Denen kannst Du nicht erzählen, dass das ein unsinniger Primärschlüssel ist ;)

Alex
Auch das FA akzeptiert nicht durchgehend nummerierte Rechnungen, sondern hierarische Nummerierungen. Es wäre auch bedauerlich, wenn ALDI Süd in Köln-Kalk beim Zentralrechner eine den Primärindex abfragen würde, während in München gerade einer an der Kasse steht.

Alex, laufende Nummern als Primärindex haben genau eine Funktion:Relationale Datenbanken stillhalten.

Das ist keine Funktion, die Core-Data interessiert.
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Ich zitiere eine Antwort aus einer Apple Mailing Liste:

"If the customer wants the software on a bed of lettuce, then serve it on a bed of lettuce"

In diesem Sinne: Wenn die eine Nummer haben wolllen ... wenn's schee macht ;)

Alex
 

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.057
Alex, laufende Nummern als Primärindex haben genau eine Funktion:Relationale Datenbanken stillhalten.
Üblicherweise holt man sich Primärschlüssel aus Sequenzen, und da ist eine fortlaufende Nummer nicht garantiert. Es wird nur garantiert, daß der Schlüssel eindeutig ist und ungefähr fortlaufend ist.