Datenbank muss das sein?

  • Datenbank muss das sein?

    Hi Leute bin noch Anfänger in Sachen Objective-C und Cocoa. Habe einige Erfahrung
    in PHP, MYSQL, HTML und CSS. Deshalb bin ich es gewohnt mit Datenbanken zu arbeiten.
    Ich habe vor eine APP zu machen für einen Bauunternehmer der sein Material (art,m2,stückzahl
    usw.) und seine Mitarbeiter (Name, Anschrift, h usw.) in 2 (Datenbanken ) selber eintragen kann und zu
    einem späteren Zeitpunkt sich an einer anderen stelle wieder auflisten lassen
    kann und auswählen kann so das er zum Beispiel ein Angebot erstellen kann wo er
    sein ganzes Material sieht und es dann auswählen kann.





    Meine Frage ist kann ich es vermeiden SQLite zu nehmen und
    es mit Core Data machen oder gibt es vielleicht noch andere alternativen um es
    so einfach wie möglich zu halten?





    Vielen Dank im voraus!
  • Wenn ich höre 'Objective-C Anfänger' und 'so einfach wie möglich' würde schon mal nicht Core Data benutzen. Die einfachste Möglichkeit wäre vermutlich, die Daten in einer Plist zu speichern, die dann irgendwo im Netz liegen kann. Diese Plist kannst Du mit Objective-C direkt in ein Array von Dictionaries schreiben und dann damit arbeiten. Ändert sich etwas beim Material oder den Mitarbeitern, wird die Plist im Netz geändert, und die App kann sie laden, um sie auf dem Gerät zu speichern. Einfach genug?
  • Hast Recht so einfach wie möglich war schlecht ausgedrückt.

    Würde gerne offline arbeiten und es nicht über das Netzt machen wollen. Ist dein Idee dann trotzdem noch möglich mit der plist? Und kann ich mir wenn es möglich ist die plist einfach in ner Tabellen vorm im vollem Umfang ausgeben lassen?
  • Naja ich brauche Für das Angebot was erstellt werden soll die (Datenbank) mit den ganzen Materialien (m2, preis usw.) und die (Datenbank) für die Mitarbeiter soll für ein Rubrik rein für die einzelnen Baustellen!


    Würde wenn es so möglich ist mich auch mit Core Data auseinander setzten wenn Core Data für diesen zweck auch da ist!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von tombery87 ()

  • tombery87 schrieb:

    Hast Recht so einfach wie möglich war schlecht ausgedrückt.

    Würde gerne offline arbeiten und es nicht über das Netzt machen wollen. Ist dein Idee dann trotzdem noch möglich mit der plist? Und kann ich mir wenn es möglich ist die plist einfach in ner Tabellen vorm im vollem Umfang ausgeben lassen?
    Du könntest natürlich eine plist direkt innerhalb der app speichern. Wenn sich allerdings irgendwas innerhalb der Liste ändert, muss die App erneut kompiliert und auf das iPhone geladen werden. Ein Update der plist übers Web ist vergleichsweise weniger anstrengend für die Person, die es bedient ;)

    Ich vermute, dass Du mit Datenbanken Tabellen meinst. Eine Datenbank hat meist mehrere Tabellen. Tabellen lassen sich leicht in einer plist darstellen, da eine plist ein XML ist.
    An Core Data würde erst mal nicht denken.
  • Wenn ich lese 'Objective-C Anfänger' und 'so einfach wie möglich' würde ich auf jeden Fall Core Data benutzen.

    Vor Allem, wenn du von dem hässlichen Strukturgedöns von PHP und Konsorten wegkommen willst, solltest du auf jeden Fall Core Data benutzen.
    Du sparst dir den Kram mit dem Speichern und Laden der Änderungen. Core Data liefert das von Haus aus.
    Du hantierst nicht mit statischenTabelleneinträgen. Core Data liefert flexible Objekte.
    Du suchst keine Abhängigkeiten an Hand von Schlüsseln. Core Data liefert Abhängigkeiten als Objektreferenzen.

    Vor Allem bei einem kleinen, einfachen Projekt hast du mit Core Data NUR Vorteile.
    Und dank der Versionierung von Core Data ist auch das Ändern des Datenmodells kein Problem.

    Zu den rufenden Unken:

    brainray2000 schrieb:


    Du könntest natürlich eine plist direkt innerhalb der app speichern. Wenn sich allerdings irgendwas innerhalb der Liste ändert, muss die App erneut kompiliert und auf das iPhone geladen werden.

    Super Sache und ungemein flexibel. Die komplette PLIST laden an Stelle der an dieser Stelle gerade benötigten Objekte. Wenn sich die Struktur der Online-PLIST ändert, muss übrigens auch neu kompiliert und aufs Phone geladen werden.
    Und überhaupt:

    brainray2000 schrieb:

    Die einfachste Möglichkeit wäre vermutlich, die Daten in einer Plist zu speichern, die dann irgendwo im Netz liegen kann. Diese Plist kannst Du mit Objective-C direkt in ein Array von Dictionaries schreiben und dann damit arbeiten. Ändert sich etwas beim Material oder den Mitarbeitern, wird die Plist im Netz geändert, und die App kann sie laden, um sie auf dem Gerät zu speichern. Einfach genug?

    Bitte was?
    Mal abgesehen vom höheren Speicherverbrauch, da du die gesamte PLIST auf einmal laden musst...

    Die folgenden Schritte
    - Netzverbindung aufbauen
    - Dokument laden
    - in Arrays und Dictionaries umwandeln
    - Verändern
    - in PLIST umwandeln
    - Netzverbindung aufbauen
    - Dokument speichern
    sind einfacher als die korrekte Nutzung von Core Data?
    - initiales fetch request aufbauen
    - fetch result in Array packen
    - Daten im Array manipulieren
    - ggf. für Löschen und Hinzufügen einmalig mit dem Managed Object Context via Einzeiler kommunizieren müssen

    Ich habe offensichtlich ganz andere Vorstellungen von 'einfach' als du...
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Lucas de Vil schrieb:

    Ich habe offensichtlich ganz andere Vorstellungen von 'einfach' als du...
    Hab ich auch schon gemerkt ;)

    Meine Meinung hat sich trotzdem nicht geändert. Wenn ich sehe, dass der Fragende Schwierigkeiten mit Artikulierung seines Problems hat, habe ich nicht den Eindruck, als wenn CD - neben den ganzen anderen Einstiegshürden - der richtige Weg ist. Es geht nicht um den _elegantesten_ Weg eines Wissenden, sondern den _möglichen_ Weg eines Anfängers, finde ich.
  • brainray2000 schrieb:

    Meine Meinung hat sich trotzdem nicht geändert. Wenn ich sehe, dass der Fragende Schwierigkeiten mit Artikulierung seines Problems hat, habe ich nicht den Eindruck, als wenn CD - neben den ganzen anderen Einstiegshürden - der richtige Weg ist. Es geht nicht um den _elegantesten_ Weg eines Wissenden, sondern den _möglichen_ Weg eines Anfängers, finde ich.

    Ich bin da Thallius' Meinung.
    Wenn man mit Cocoa entwickeln will, dann soll man es verdammt noch mal richtig machen.

    Der Mehraufwand, sollte man bei 0 anfangen, ist sehr gering. Ein Guide mehr zu lesen, drei Samples mehr zum Ausprobieren.

    Wenn man natürlich Anderes gewöhnt ist und daran krampfhaft festhalten will, sollte man sich dennoch zusammenreißen und es richtig machen.
    Andernfalls wird man durch das Mixen der unterschiedlichen Ansätze unglaublich schnell überfordert und an alle möglichen Grenzen stoßen.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Lucas de Vil schrieb:

    Wenn man mit Cocoa entwickeln will, dann soll man es verdammt noch mal richtig machen.

    Der Mehraufwand, sollte man bei 0 anfangen, ist sehr gering. Ein Guide mehr zu lesen, drei Samples mehr zum Ausprobieren.
    Wie gesagt, das mag aus Deiner Sicht so sein. Im übrigen finde ich es eher abschreckend, wenn hier Anfänger immer wieder in genau diese Grundsatz-Diskussion verwickelt werden - das ist völlig kontraproduktiv und verwirrend. Wenn Du der Meinung bist CD wäre der richtige Weg, dann erörtere ihn doch ausführlich, statt hier rumzudiskutieren ;)