korrektes Speichern in Datenbank

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • korrektes Speichern in Datenbank

    Hallo,

    ich habe eine View in der ich Daten abspeichern möchte.

    So wie ich es bisher habe, wird aber nur Null gespeichert. Wie muss ich meine Struktur ändern, sodass die eingetippten Werte übernommen werden und nicht nur Nullen gespeichert werden. Bzw. wo ist mein Denkfehler.


    C-Quellcode

    1. struct AddMoneyView: View
    2. {
    3. @Environment(\.managedObjectContext) var moc
    4. @Environment(\.dismiss) var dismiss
    5. @State private var bausparvertrag = 0.0
    6. @State private var datum = Date()
    7. @State private var girokonto = 0.0
    8. @State private var goose = 0.0
    9. @State private var immobilienkredit = 0.0
    10. @State private var score = 0
    11. let formatter: NumberFormatter = {
    12. let formatter = NumberFormatter()
    13. formatter.numberStyle = .decimal
    14. formatter.minimumFractionDigits = 2
    15. formatter.maximumFractionDigits = 2
    16. return formatter
    17. }()
    18. var body: some View
    19. {
    20. NavigationView
    21. {
    22. Form
    23. {
    24. Section
    25. {
    26. TextField("Girokonto", value: $girokonto, formatter: formatter)
    27. .keyboardType(.decimalPad)
    28. TextField("Bausparvertrag", value: $bausparvertrag, formatter: formatter)
    29. .keyboardType(.decimalPad)
    30. TextField("Goose", value: $goose, formatter: formatter)
    31. .keyboardType(.decimalPad)
    32. TextField("Immobilienkredit", value: $immobilienkredit, formatter: formatter)
    33. .keyboardType(.decimalPad)
    34. }
    35. Section
    36. {
    37. Button("Save")
    38. {
    39. let newMoney = Money(context: moc)
    40. newMoney.id = UUID()
    41. newMoney.datum = datum
    42. newMoney.girokonto = girokonto
    43. newMoney.bausparvertrag = bausparvertrag
    44. newMoney.goose = goose
    45. newMoney.immobilienkredit = immobilienkredit
    46. try? moc.save()
    47. dismiss()
    48. }
    49. }
    50. }
    51. .navigationTitle("Add Money")
    52. .foregroundColor(.accentColor)
    53. .navigationBarTitleTextColor(Color.accentColor)
    54. }
    55. .gesture(DragGesture().onChanged{_ in UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)})
    56. }
    57. }
    Alles anzeigen
    Danke für Tipps und Hilfe
  • Keine Ahnung was bei dir nicht geht, aber der Code ist sowieso nicht vollständig.

    - Was ist die Klasse Money?
    - Wieso gibst Du dort moc mit?
    - Müsste nicht irgendwo ein insert() vorkommen?
    - Wenn mac.save() schief geht, wieso gibst Du die Fehlermeldung nicht wenigstens in der Konsole aus?
  • Runshak schrieb:

    - Money ist die Entität (Core Data)
    Entität wird in CoreData verwendet um ein Datenmodell zu beschreiben. Also die Beschreibung meinst Du vermutlich nicht, sondern die Klasse Money ist abgelitten von NSManagedObject. Entweder über generierten Code oder von Hand geschrieben. Und wenn alles korrekt ist, dann passiert das insert() bei der init-Methode.

    Wird eine Exception geschmissen? try? sollte man bei dem save() Aufruf nicht verwenden. Dann lass lieber deine Anwendung abstürzen.

    Ansonsten halt abspecken. Statt den Zuweisungen Werte von Hand festlegen, einfache Konsolen-Beispiel sich schreiben...
  • Wenn es das tut was Du haben möchtest, dann ja.

    Ich würde vermutlich statt print() einen Logger verwenden und den Fehler als error ausgeben. Des Weiteren muss man sich auch Gedanken machen, was möchte man tun, wenn ein Fehler auftritt. So zu tun als ob alles gut ging ist eigentlich nicht gut. Natürlich gibt es auch Ausnahmen.
  • Runshak schrieb:

    Problem gelöst...Xcode neugestartet und es tut...Schade, dass man nicht mit Visual Studio Swift programmieren kann. Dieses Xcode ist manchmal wirklich für die Tonne

    Danke für eure Hilfe! Werde eure Tipps in Zukunft berücksichtigen und erst dann nach Hilfe fragen!
    Naja, bei Visual Studio must du halt nicht neu starten weil du ja Windows alle 2h einfach neu starten must :D
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Runshak schrieb:

    Problem gelöst...Xcode neugestartet und es tut...Schade, dass man nicht mit Visual Studio Swift programmieren kann. Dieses Xcode ist manchmal wirklich für die Tonne

    Danke für eure Hilfe! Werde eure Tipps in Zukunft berücksichtigen und erst dann nach Hilfe fragen!
    öhm.. Man kann mit Visual Studio Code Swift programmieren. Schau mal in den Extensions, da findste nen paar Sachen, auch mit >200k downloads.

    Aber ich kann dich beruhigen.. Entwickle mal mit Android Studio, danach wirst du dir XCode auf die linke Pobacke tätowieren... ;)
    Damit meine ich, es geht deutlich schlechter.
  • klar, schlechter geht immer. Aber ein Konzern wie Apple dürfte meines Erachtens ruhig mehr Geld und Man(n)stärke in SWIFT bzw. die hauseigene Software stecken. Vor allem in die Fehlerbehebung auch die Doku von Swift dürfte etwas detaillierter an einigen Stellen ausfallen.

    Im Vergleich zu anderen Firmen ist all das zwar an vielen Stellen Meckern auf hohem Niveau aber wer so viel Kohle wie Apple auf der hohen Kante hat, darf das ruhig in Qualität investieren
  • Runshak schrieb:

    klar, schlechter geht immer. Aber ein Konzern wie Apple dürfte meines Erachtens ruhig mehr Geld und Man(n)stärke in SWIFT bzw. die hauseigene Software stecken. Vor allem in die Fehlerbehebung auch die Doku von Swift dürfte etwas detaillierter an einigen Stellen ausfallen.

    Im Vergleich zu anderen Firmen ist all das zwar an vielen Stellen Meckern auf hohem Niveau aber wer so viel Kohle wie Apple auf der hohen Kante hat, darf das ruhig in Qualität investieren
    Kennst du den Swift Language Guide? Der hilft dir vielleicht beim Einstieg mehr als die Doku. Ich persönlich hab an der Swift Doku nichts auszusetzen, ich finde die eigentlich einwandfrei. Und wenn man bedenkt, was es zusätzlich an kostenlosen Lern-Ressourcen gibt (Language-Guide, tonnenweise WWDC-Sessions, bei SwiftUI sogar interaktive Tutorials auf der Website, Swift-Playgrounds usw. usw.), kann ich deine Kritik ehrlich gesagt nicht nachvollziehen. All das für 0 Cent, plus eine ebenfalls kostenlose IDE, die regelmäßig geupdated und verbessert wird und die bei mir relativ wenig Probleme macht. Bei vielen Features und vor allem regelmäßig neuen Features fallen natürlich immer mal wieder Kleinigkeiten an (z.B. SwiftUI Previews haben erst in der zweiten Version richtig Spaß gemacht), aber das ist denke ich dem hohen Update-Zyklus geschuldet und normal.
    Ich kann mir außerdem nicht wirklich vorstellen, dass ein Neustart von Xcode Einfluss auf deine bereits kompilierte App hat. Wenn du sie nach Neustart neu kompiliert hast, könnte es sein, dass du davor vergessen hattest ein geändertes File abzuspeichern und dies beim Schließen von Xcode geschah? Wie dem auch sei, schön dass es jetzt funktioniert. ;)
  • Runshak schrieb:

    klar, schlechter geht immer. Aber ein Konzern wie Apple dürfte meines Erachtens ruhig mehr Geld und Man(n)stärke in SWIFT bzw. die hauseigene Software stecken. Vor allem in die Fehlerbehebung auch die Doku von Swift dürfte etwas detaillierter an einigen Stellen ausfallen.

    Im Vergleich zu anderen Firmen ist all das zwar an vielen Stellen Meckern auf hohem Niveau aber wer so viel Kohle wie Apple auf der hohen Kante hat, darf das ruhig in Qualität investieren
    Also der Satz "schlechter geht immer" ist eine Floskel die man in dem Kontext mMn. nicht verwenden kann.

    "Die Anderen" haben auch viel Kohle auf der hohen Kante... Android Studio wird hauptsächlich von Google gewartet - auch keine kleine Nischenbude. Bedeutend schlechter umgesetzt als XCode.. Ganz ab von der Performance.. Die ganzen Memes, in denen Leute sich Eier auf Ihrem Laptop grillen kommen nicht von ungefähr.
    VS von Microsoft, mit einer viel längeren Leidensgeschichte, auf dessen Grundlage aber viele, viele Kinderkrankheiten bereits herausgefiltert sind und nur deshalb ist es wirklich ausgereifter.

    Und im Vergleich von weiteren Entwicklungssprachen (zumindest im Mobile Bereich) sprechen wir dann noch mit Abstrichen von Flutter, React Native und wie der ganze Schmarn heißt.. Und da wird es dann ganz wild was Bugs und komische Workaround angeht...

    Aktuell entwickle ich auf der Arbeit in C mit VSCode.. Da is alleine der Einstieg für neue Kollegen schon mal was anderes als auf nem Macbook Swift entwickeln.. Xcode runterladen, updaten, los gehts..
    Mit VSCode lädst du erst die IDE, dann die Extension für C/C++, dann musst du GNU installiert haben, Gcc dann musst du herausfinden wie du deinen Code compilierst, denn das läuft da übers Terminal und nicht auf einen komfortablen "Start-knopf", dann wunderst du dich warum der Zugriff nicht klappt, weil du den Ordner erst anders einbinden musst und und und...


    Also, ich verstehe das man sich gerne mal über Swift und Xcode beschweren kann und das durchaus hin und wieder auch Sinn macht - aber im Vgl. zu anderen hast du in der Apfel Welt schon eine grundsolide Entwicklungsumgebung, die den Entwickler möglichst gut unter die Arme greift und wirklich recht komfortabel ist ^^