ULTIMATIVES SwiftData Tutorial - Deutsch

  Рет қаралды 4,112

Coding Swift with Nico

Coding Swift with Nico

Күн бұрын

Пікірлер
@CodingSwiftWithNico
@CodingSwiftWithNico Жыл бұрын
WICHTIG!!! In dem Video hatte ich nicht die aktuellste Xcode Beta installiert gehabt. In der aktuellsten Version hatte sich etwas in der Syntax geändert: Bei dem Query muss noch der Typ hingeschrieben werden: @Query(sort: \Notiz.inhalt) private var notizen: [Notiz] Bei der Delete Rule muss noch der Parameter "deleteRule" vorher angegeben werden. @Relationship(deleteRule: .cascade) var events: [Event] Oder ihr findet auch den aktuellsten Quellcode auf meinem Discord: discord.gg/cVczYJAJ2P
@goisa8653
@goisa8653 Жыл бұрын
Super Tutorial! Versuche gerade alles nachzuprogrammieren. Bleibe aber am Type für Notizen hängen. Bekomme immer wieder Fehler.
@CodingSwiftWithNico
@CodingSwiftWithNico Жыл бұрын
@@goisa8653 Danke! Was ist das denn für eine Fehlermeldung? Kannst mir auch gerne auf Discord schreiben. Link ist in der Beschreibung. Dort könntest du mir auch den Code schicken
@goisa8653
@goisa8653 Жыл бұрын
hat sich erledigt1
@CodingSwiftWithNico
@CodingSwiftWithNico Жыл бұрын
@@goisa8653 perfekt 👍
@LebenWerden
@LebenWerden 7 ай бұрын
Hi, müssen RelationShips immer Arrays sein? (Min 14:10)
@CodingSwiftWithNico
@CodingSwiftWithNico 7 ай бұрын
Hey, ne können auch einzelne Objekte sein. Dann ist es eine 1:1 Beziehung
@LebenWerden
@LebenWerden 7 ай бұрын
@@CodingSwiftWithNico Ach so! Danke.
@iceman-elektrischunterwegs3099
@iceman-elektrischunterwegs3099 5 ай бұрын
Frage: wenn ich Relationship schreibe, wird mir in der klammer () nur ".unique." und ".init"" angeboten. Bei dir ja auch das Cascade, woran liegt das?
@LebenWerden
@LebenWerden 8 ай бұрын
Hi Nico, eine Frage zur Minute 7:33. warum kann man onDelete nicht benutzen?
@CodingSwiftWithNico
@CodingSwiftWithNico 8 ай бұрын
Hey, du kannst auch onDelete benutzen. onDelete gibt dir aber einen IndexSet und du musst dir dann erst alle items rausholen aus der Liste mit dem IndexSet und dann löschen. Deswegen habe ich hier eine SwipeAction benutzt, wo du dann direkt das Model hast
@LebenWerden
@LebenWerden 7 ай бұрын
Hallo Nico, in Min 2:10 schreibst Du var id: UUID. Wird dadurch das Notiz automatisch Identifable? Brauchen das Identifable Protokoll nicht explizit anzugeben, wenn wir var id: UUID scheiben? Ist das @Model Notiz automatisch konform zu Equatable, Hashable und Comparable?
@CodingSwiftWithNico
@CodingSwiftWithNico 7 ай бұрын
Hey, alle @Models sind immer automatisch Identifiable. SwiftData legt im Hintergrund immer automatisch schon eine ID an. Ich mache es oft aber immer nochmal selber, ist aber nicht notwendig
@LebenWerden
@LebenWerden 7 ай бұрын
@@CodingSwiftWithNico Ist ein @Model auch Equatable, Hashable und Comparable?
@LebenWerden
@LebenWerden 8 ай бұрын
Hallo Nico, eine Frage zu Min 2:35: Ich habe in meinem Code im Model ein Array mit var inhalt: [String] erstellt. Kann man das so machen? Muss man auf etwas achten?
@CodingSwiftWithNico
@CodingSwiftWithNico 8 ай бұрын
Hey, müsste eigentlich funktionieren. Spricht nichts dagegen
@LebenWerden
@LebenWerden 8 ай бұрын
​@@CodingSwiftWithNico Habe einen eigenen Code erstellt. Was mache ich hier falsch: @Model class Notiz { var id: UUID var exerciseArray: [String] init(exerciseArray: [String]) { self.id = UUID() self.exerciseArray = exerciseArray } } struct ContentView: View { @Environment(\.modelContext) private var modelContext @State private var notiz = Notiz(exerciseArray: []) //
@CodingSwiftWithNico
@CodingSwiftWithNico 8 ай бұрын
Du kannst keine @State Variable wie in deinem Beispiel mit SwiftData erstellen. Du kannst sie nur zuweisen. Wie die genaue Lösung für dein Szenario ist, müsste ich wissen was du mit der @State Variable vor hast oder mehr Code sehen
@LebenWerden
@LebenWerden 8 ай бұрын
​@@CodingSwiftWithNico Mir geht es um folgendes: In deinem Besipiel hast du eine "leere" Variable notiz erstellt: @State var notiz = "" Was ich benötige, ist eine "leere" Variable vom meinem Typ Notiz. Wenn ich @State private var notiz: Notiz schreibe, dan kommt bezüglich Initialisierung ein Fehler. #Preview {ContentView().modelContainer(for: Notiz.self)} Hier weiß ich nicht weiter.
@CodingSwiftWithNico
@CodingSwiftWithNico 8 ай бұрын
Wofür brauchst du denn eine leere Variable? Du müsstest in deinem Fall dann wahrscheinlich nur ein Array erstmal nehmen. Dann befüllst du es und drückst auf einen Hinzufügen Knopf und erst dann darf das Notizen Objekt erstellt werden
@iceman-elektrischunterwegs3099
@iceman-elektrischunterwegs3099 5 ай бұрын
Hi, wenn ich das @Query schreibe, wird mir nach "Notiz. nur Sachen wie "count" , "isEmty" vorgeschlagen, aber nicht "id", oder "inhalt" woran liegt das? das fehlt dann die Verbindung zur Class oder?
@CodingSwiftWithNico
@CodingSwiftWithNico 5 ай бұрын
Hey, @Query gibt dir eine Liste. Damit du auf inhalt oder id zugreifen kannst, musst du auf ein bestimmtes Element zugreifen in der Liste. z.B. indem du mit einer ForEach Schleife drüber iterierst, mit einem Index auf ein Element zugreifst notizen[0].inhalt um auf das erste Element zuzugreifen (Achtung kann abstürzen wenn die Liste leer ist) oder die Funktionen von der Liste benutzt notizen.last um das letzte Element zu bekommen. (Achtung kann auch abstürzen wenn die Liste leer ist)
@iceman-elektrischunterwegs3099
@iceman-elektrischunterwegs3099 5 ай бұрын
@@CodingSwiftWithNico verstehe ich so halb. die Frage wäre für mich, was muss stimmmen im Code, das einem das ".inhalt" oder ".id" angezeigt wird? die "class Notiz" und ".modelcontainer(for: Notiz.self) oder noch mehr?
@CodingSwiftWithNico
@CodingSwiftWithNico 5 ай бұрын
Du musst von der Liste auf ein bestimmtes Element zugreifen. Aktuell ist es eine Liste, was auch eine Liste sein muss Was möchtest du denn erreichen? Alle Inhalte von den notizen anzeigen? Dann müsstest du z.B. eine ForEach Schleife nehmen
@iceman-elektrischunterwegs3099
@iceman-elektrischunterwegs3099 5 ай бұрын
@@CodingSwiftWithNico Was ich erreichen möchte, ok sorry, ich dachte das wäre soweit klar, ich code genau die gleiche App nach, wie du im Video. Also auch mit der Foreach schleife. Nur kommt halt bei "Notiz. nicht als vorschlag "inhalt" oder "id. also wie man es in der class angegeben hat, sondern halt "count", "isEmty" und so. Ich habe wohl den Fehler gefunden, ich hatte die @state private var Notiz genannt, und die @query auch "Notiz", also beides gleich...
@LebenWerden
@LebenWerden 7 ай бұрын
Hi, kann der Modifier onMove() auf Query notizen gekoppelt werden? Ich bekomme immer Fehler angezeigt. Hast Du zu onMove bei Qquery ein Video?
@CodingSwiftWithNico
@CodingSwiftWithNico 7 ай бұрын
Hey, onMove kann nicht auf ein Query gekoppelt werden, da es immer auf eine ForEach Schleife gekoppelt sein muss. Die ForEach Schleife kann aber ein query enthalten
@LebenWerden
@LebenWerden 7 ай бұрын
@@CodingSwiftWithNico onDelete funktioniert aber.Wieso nicht onMove?
@CodingSwiftWithNico
@CodingSwiftWithNico 7 ай бұрын
Kannst du mir den Code mal zeigen?
@LebenWerden
@LebenWerden 7 ай бұрын
@@CodingSwiftWithNico Gerne, aber ch glaube nicht, dass der Code hier reinpasst. Geht das über Discord? Hab mich eben angemeldet.
@CodingSwiftWithNico
@CodingSwiftWithNico 7 ай бұрын
Klar, du kannst ihn da z.B. mit der Frage in dem „Apple Chat“ posten.
@LebenWerden
@LebenWerden 8 ай бұрын
Hallo Nico, ich hätte da eine Frage zu List. Kann man die Zelle einer List in Farbe darstellen? Oder den Zellenrand in Farbe?
@CodingSwiftWithNico
@CodingSwiftWithNico 8 ай бұрын
ja, über .listRowBackground(Color.red). Den Rand wüsste ich nicht direkt wie das geht
@LebenWerden
@LebenWerden 8 ай бұрын
@@CodingSwiftWithNico Danke, werde das gleich mal ausprobieren.
@LebenWerden
@LebenWerden 8 ай бұрын
Hi Nico, du hast mir bisher super geholfen. Hätte aber eine neue Frage. Ich habe in meinem Code eine weitere View erstellt. Innerhalb dieser View möchte ich auf den notizen-Speicher zugreifen. Wie macht man das?
@CodingSwiftWithNico
@CodingSwiftWithNico 8 ай бұрын
Hey, sehr gerne! Nur auf eine einzelne Notiz oder alle? Wenn du auf alle zugreifen möchtest, kannst du dort auch einfach das query benutzen. Wenn du mir eine einzelne Notiz haben möchtest, musst du die übergeben, ähnlich wie bei der Stelle 9:08 im Video
@LebenWerden
@LebenWerden 8 ай бұрын
@@CodingSwiftWithNicoWenn in allen Views @Query private var notizen: [Notiz] @Environment(\.modelContext) private var modelContext steht, kann ich dann kann man auf notizen zugreifen? Hast Du es gemeint?
@LebenWerden
@LebenWerden 8 ай бұрын
@@CodingSwiftWithNicoHat geklappt, kann auf alle notizen zugreifen. Danke Dir!
@CodingSwiftWithNico
@CodingSwiftWithNico 8 ай бұрын
Gerne!
@LebenWerden
@LebenWerden 8 ай бұрын
Hallo Nico. Habe deinen Code erstellt, aber alles in eine Swiftdatei gepackt. Alles läuft richtig. So, habe dann copy paste gemacht um ihn in eine neue Datei zu legen. Das dann Fehlermeldungen bezüglich Mehrfachdeklaration erscheint, ist klar. Ich muss dann jede struct, class func usw. umbennen, aber das ist mühsam und nervig. Sie mit private deklarieren geht auch nicht. Branchen erstellen um hin- und her zu switchen ist ebenso nervig. Und ein komplett neues Prijekt erstellen will ich auch nicht. Hättest Du eine Idee?
@CodingSwiftWithNico
@CodingSwiftWithNico 8 ай бұрын
Hey, wüsste gerade auch keinen besseren Weg. Bin ich lege aber eher immer ein Test-Projekt an, wo ich Sachen ausprobiere und dann auch wieder lösche
@LebenWerden
@LebenWerden 8 ай бұрын
@@CodingSwiftWithNicoSchade, dann muss halt so weiter machen.
@LebenWerden
@LebenWerden 10 ай бұрын
Hallo, ab genau welchem Tag kann SwiftData benutzt werden?
@CodingSwiftWithNico
@CodingSwiftWithNico 10 ай бұрын
Hey, ist jetzt schon draußen mit Xcode Version 15
@PokeChucks
@PokeChucks Жыл бұрын
Leider ist die CloudKit Integration noch ziemlich buggy. Hoffe das wird schnell behoben bzw. ermöglicht.
@ybmusic7865
@ybmusic7865 10 ай бұрын
Gutes Video, aber zu 0:50-1:00, kann ich nicht nachvollziehen. SwiftUI ist das letzte, was man lernen sollte, es ist schließlich nur das User Interface. Ein Programm kann ohne UI arbeiten, aber ein UI nicht ohne Programm. Ein Neuling sollte daher immer zuerst lernen Programme ohne UI (Terminalprogramme) zu programmieren. Kann er mit Klassen, Structs, Datenspeicherung mit SwiftData usw. umgehen, dann erst sollte er sich in das UI einlernen. Denn so entsteht eine Lernkurve.
@CodingSwiftWithNico
@CodingSwiftWithNico 10 ай бұрын
Danke! SwiftData macht m.M.n. nur Sinn in UIs zu benutzen. Man wird niemals ein Konsolen Programm mit SwiftData haben. Abgesehen davon zeige ich in meinem SwiftUI Tutorial zuerst wie man Swift programmiert und nicht SwiftUI
@LebenWerden
@LebenWerden 8 ай бұрын
Hi Nico, mein Project hat ein struct, die ein Bindable Property Wrapper notiz und ein Integer linkNumber. Ich möchte notiz und linkNumber in die Preview schreiben. Aber ich weiß nicht wie. Kommt da irgendwas rein mit .contant oder so? #Preview { ExerciseView() } struct ExerciseView: View { @Bindable var notiz: Notiz let linkNumber: Int // ... }
@CodingSwiftWithNico
@CodingSwiftWithNico 8 ай бұрын
Hey, du benötigst dafür einen PreviewWrapper. Du kannst dafür folgenden Code schreiben: struct SwiftDataPreviewWrapper: View { @ViewBuilder var view: Content let modelContainer: ModelContainer init(of type: S.Type, view: () -> Content) where S : PersistentModel { do { modelContainer = try ModelContainer(for: type, configurations: .init(isStoredInMemoryOnly: true)) } catch { fatalError("Could not initialize ModelContainer") } self.view = view() } var body: some View { view .modelContainer(modelContainer) } } #Preview { SwiftDataPreviewWrapper(of: Notiz.self) { ContentView(notiz: Notiz(name: "Test")) } }
ULTIMATIVES SwiftUI Tutorial - Deine erste iOS App in 80 Minuten - deutsch
1:18:05
Coding Swift with Nico
Рет қаралды 12 М.
SwiftUI Core Data Tutorial - Deutsch 2023
14:21
Coding Swift with Nico
Рет қаралды 5 М.
UFC 287 : Перейра VS Адесанья 2
6:02
Setanta Sports UFC
Рет қаралды 486 М.
24 Часа в БОУЛИНГЕ !
27:03
A4
Рет қаралды 7 МЛН
УЛИЧНЫЕ МУЗЫКАНТЫ В СОЧИ 🤘🏻
0:33
РОК ЗАВОД
Рет қаралды 7 МЛН
5. Swift Data One to Many Relationships
25:58
Stewart Lynch
Рет қаралды 10 М.
SwiftData Basics in 15 minutes
15:18
CodeWithChris
Рет қаралды 55 М.
Komplettes SwiftData Tutorial auf Deutsch - 2024
28:18
Coding Swift with Nico
Рет қаралды 1,3 М.
UFC 287 : Перейра VS Адесанья 2
6:02
Setanta Sports UFC
Рет қаралды 486 М.