👋 Our "Launch Your First App" program will help you build up your iOS skills to publish your very own feature rich app even if you’re a beginner starting from scratch. cwc.to/youtubeoffer
10:35 I think that this delete method is simpler and fancier, but I think your method is more trusty .swipeActions(edge: .trailing) { Button("Delete", systemImage: "trash", role: .destructive) { context.delete(item) } }
Hey Chris, I have a question for you. After watching wwdc 2024, i see that swift data now supports more operations, like history tracking and custom model configuration implementation. Would you say that SwiftData is now ready to be used? Also, did they resolve a bug, when you decorated your model with @Attribute(unique) that the app crashed ?
I've read up quite a few information since, I feel like with SwiftData MVVM seems less relevant and it might become more complicated if we strictly want to implement MVVM.
I have a core data app that I’ll be changing to swift data after seeing this. Question: in my app now, I can click a button in one view that will add item to core, then when I go to view that has the list it will be there. I’m assuming this will be easy to do in swift data also? Not sure how I’ll do that though.
Hello @maryannadelman4438! To be honest I'm not sure how to answer your question, maybe our community members can help. You can share this to our community forum @ [codecrew.codewithchris.com/] --Joash
I find it kinda funny I was asking "why the underscore on the parameter name?" as you kinda just glazed over it in the delete function and I HAD TO KNOW so I went and looked it up. Then a bit later you explain it for the update function.. I SHOULD HAVE TRUSTED YOU GOOD SIR. SwiftData is pretty awesome though. I'm...struggling to get a good grasp on Swift. I've been doing C and C# for much of my life and something about Swift just throws me off. But your channel has at least put me in the right path.
I am getting an error at part 8:07 "Missing argument for parameter 'id' in call" I'm using Xcode 15.0 and iOS 17. Can you explain what I am missing as I am new to swift and swiftdata.
I was able to figure out the issue with the addItem module had to use *let item = DataItem(id: UUID().uuidString, name: "Test Item")* after that everything else was smooth sailing. Great tutorial on SwiftData. Subscribed and can't wait to watch more videos. Thanks
Love Your videos!! I have started a project in SwiftData, but I can not get the @Query to filter on date?? I've checked all the forums, and many people seem to be struggling, but no real answers that work for me. Any advice on filtering on date in SwiftData??
Is there some kind of visual view integrated to Xcode to see the current database layout, entities, relations, and data and so on? Like pgAdmin for Postgres for example?
Brand new to Mac development. Never used coredata. Where can I find the rest of the tutorial that explains things like… how .onDelete creates these magical indexies , and why they swipe view shows up without any code, showing anything about swiping etc. thanks!
Hey I just started watching your videos and I was intrested your collection of keyboards that are always prominent in your videos. Would be cool to see a video talking about your keyboards or a setup tour.
No, SwiftData is not an embedded database, it's an object graph and persistence framework, more like an ORM. It uses SQLite as one of its persistent store. You can sync data from SwiftData and MongoDB Atlas but it requires extra and redundant work, I wouldn't recommend it. SwiftData comes with built-in support for iCloud syncing. If you need to sync data from your app to Mongo Atlas DB, I recommend using Mongo Realm instead of SwiftData (www.mongodb.com/docs/atlas/device-sdks/sdk/swift/). - Iñaki
Why is everyone stuck with todo program? There are like millions of example online for todo program. Why not do user login and register and delete user using swiftdata. But thank you for this amazing tutorial.
Should we still use codable structs to decode JSON API responses or should we use the new codable @Model class to decode API responses? Which is better?
You can actually do both, but if you add the Codable conformance to your SwiftData model, you'll have to manually write the Decodable and Encodable conformances yourself, as derived conformance simply doesn't work out the box. @Model is a Swift Macro, and it adds boilerplate code that does not conform to Codable (that's why derived conformance doesn't work). Donny Wals has written a great article about it, you may want to read about it here: www.donnywals.com/making-your-swiftdata-models-codable/ Have a good day! - Iñaki
@CodeWithChris Hey Chris, as soon as i typ in: "@Model", there comes a red message saying: "@Model requires an initializer be provided for 'DataItem". Please help. What did I do wrong?
Hi @JustYe322, Yes! Xcode run on any mac. You can also check this link to see the minimum system requirements to be sure that your machine can working on the latest version available. developer.apple.com/support/xcode/ Hope this help. --Joash
Hi, in the video Chris ran the app in the Simulator instead of using the SwiftUI preview. There is an additional code setup required to make the SwiftUI preview work with SwiftData, but it doesn't simulate any persistence functionality that you might expect. To run the app similar to the video, make sure to select a Simulator as your destination (on the top middle part of Xcode), then press Cmd + R. Xcode should build the project and launch the app in the iOS Simulator you chose. Hope that helps! - Iñaki
"To provide automatic iCloud sync, SwiftData requires the CloudKit entitlement and an iCloud container. For more information, see Configuring iCloud services." For more information, you can check out: developer.apple.com/documentation/swiftdata Thanks for watching! - Iñaki
Thank you Chris that is good, I'm going to be undertaking in my second semester as part of my masters in IT the unit in iPhone software engineering. I hope they are up-to-date as you are!
Do you still need Identifiable protocol? Really good video thank you. From another tutorial ‘SwiftData automatically handles the identification aspect of the model, eliminating the need for explicitly defining an id property or conforming to the Identifiable protocol.’
I'd still add a UUID (not a String). That way, it allows you to separate out distinct models instances, even if they happen to share the same data. It would be better for your own sanity, and debugging.
Hey! When I query my database and try to insert the variables like name, it throws up an error saying "Value of type '[my class]' has no member 'name'". Is there something simple I'm missing?
Hi! Sorry you're running into that! Have you checked if there is a `name` property in your data model class? You can declare it like how Chris did it on this timestamp: ua-cam.com/video/krRkm8w22A8/v-deo.html Hope that helps! - Iñaki
Hello @Kyriacos-ue5kt, Indeed, you can utilize the new SwiftData API across all Apple development environments. It's not exclusively limited to iOS. --Joash
In more complex applications we usually use different design patterns like the repository pattern and try to move away the functions from the view itself. How would you implement a repository pattern etc. with the SwiftData? :)
I made a video on this, but it's not specific to SwiftUI, but how to write good Swift code in general ua-cam.com/video/4hVyozTOSTo/v-deo.htmlsi=K8ORdCwzcDNpFPB9
I get a Preview Crashed error when I try to add a record to the model. Does anyone know why that would happen? I'm pretty sure the code looks the same as Chris's code.
Does it show any error in the console log? If it does, you may wanna post about it in our developer community forum: cwc.to/codecrew Someone might be able to help see what's wrong with your code or be able to determine what caused the issue. - Iñaki
can someone help me please .. i have a SWIFTUI application with a flow as follows: A(landscape orientation)->B(landscape)-C(portrait)->D(portrait). also when I navigate back from C to B it should turn back to landscape as B is in landscape. (I am using NavigationLink in my application to navigate)How do I achieve the portrait lock in swiftUI. i tried the .onAppear{} and .onDisappear{} method.. (firstly it is no longer available on ios 16 and secondly it gives a choppy animation where the view does not expand fully to take the new rotated screen size; there is white space after it rotates)
Hello, @VladislavVaz! Unfortunately we can't debug it for you in the comment section here but you can try joining and posting in our community: cwc.to/codecrew --Joash
Hello, @DefeatOG! Unfortunately we can't debug it for you in the comment section here but you can try joining and posting in our community: cwc.to/codecrew --Joash
wow! so much better than the coreData workflow. So will swift data ever be compatible with older iOS versions or will it only ever be compatible for iOS17 and up? I can't wait until this becomes the standard and we can shove coreData into the abyss. but if it's only ever going to be compatible for iOS17 and above then it's going to take some years right?
also, Chris - your teaching style is world class. You have the advantage of having a very easy voice to listen to. I really do hope you make a "100 Days of Chris UI" or something in the future
Hello, Unfortunately, we can't debug it for you in the comment section here but you can try joining and posting in our community: cwc.to/codecrew --Joash
Hello,@napoleontsar! You may want to check this video to learn more about NavigationStack. ua-cam.com/video/7dnTHrLyFLc/v-deo.html&ab_channel=CodeWithChris --Joash
Hello @babida9113! Unfortunately we can't debug it for you in the comment section here but you can try joining and posting in our community: cwc.to/codecrew
Darn ... too bad this is unusable while working with MVVM, I tried today to somehow bend it to my will ... guess what ... went to core data after ready long struggle.
Nice work on separating behavior from view. Too few examples take the care to demonstrate clean code. You, sir, have saved many headaches by teaching good practices
Hey Chris, I have a question for you. After watching wwdc 2024, i see that swift data now supports more operations, like history tracking and custom model configuration implementation. Would you say that SwiftData is now ready to be used? Also, did they resolve a bug, when you decorated your model with @Attribute(unique) that the app crashed ?
👋 Our "Launch Your First App" program will help you build up your iOS skills to publish your very own feature rich app even if you’re a beginner starting from scratch. cwc.to/youtubeoffer
Simple, and to the point. Thank you!
Excellent short yet complete tutorial on how to create a swift ui CRUD app. Appreciate this.
Glad it was helpful! Thanks for learning with us! - Iñaki
Awesome Video, I appreciate simplicity of examples.
Great job! Thanks for the basics, which is what everyone should start with!
Really good and simple description, especially for the CRUD operations.
Great video. Straight to the point.
Thank you for keeping the code short and to-the-point :)
Great video I just started with swif but I’m pretty secure that I’ll learn Alot with your UA-cam video Italia Grazie
Brilliant. Chris you're great.
Your tutorial is clear and easy understand. Thank you! ❤
Wow that is a lot easier than CoreData directly.. Good video Chris and thank you for your time!
You're welcome, glad you liked it!
this is the best swiftdata tutorial!!! thank you!!
Glad it was helpful! Thanks for watching! - Iñaki
10:35 I think that this delete method is simpler and fancier, but I think your method is more trusty
.swipeActions(edge: .trailing) {
Button("Delete", systemImage: "trash", role: .destructive) {
context.delete(item)
}
}
good video appreciate the effort.
Amazing, I love this example, I have all to use it, thanks you and success in everything you do, greeting from México City.
Glad it was helpful! Thanks for learning with us! - Iñaki
Nice clear presentation style. Cheers!
Glad you liked it!
Why doesn't the view update whenever an item is added to the context?
clear and straightforward. great tutorial 👍
Thank you! I was scared to approach this topic but you made it easy to understand!
Hello! We're glad you found your video valuable! And thank you for the appreciation. :)
--Joash
Hey Chris, I have a question for you. After watching wwdc 2024, i see that swift data now supports more operations, like history tracking and custom model configuration implementation. Would you say that SwiftData is now ready to be used? Also, did they resolve a bug, when you decorated your model with @Attribute(unique) that the app crashed ?
Very easy tutorial to follow. Thanks!!
Glad it was helpful! Thanks for watching! - Iñaki
Ahh - feels like I'm back home again witha CodeWithChris video!
Thanks for this very good tutorial!!!🙂
Glad it was helpful! Thanks for watching! - Iñaki
Thanks!!! Fast focused and clear
Thanks for learning with us! - Iñaki
Just wondering, if we follow MVVM, can we put that @Environment context in the ViewModel class?
I've read up quite a few information since, I feel like with SwiftData MVVM seems less relevant and it might become more complicated if we strictly want to implement MVVM.
Great video. Much easier than Core Data!
Great Demo Chris ....Lot easier than earlier database access !!! ... Thanks :D
Thanks for the introduction on this
Thanks for learning with us! - Iñaki
very great tutorial for basic concept
I have a core data app that I’ll be changing to swift data after seeing this. Question: in my app now, I can click a button in one view that will add item to core, then when I go to view that has the list it will be there. I’m assuming this will be easy to do in swift data also? Not sure how I’ll do that though.
Hello @maryannadelman4438!
To be honest I'm not sure how to answer your question, maybe our community members can help. You can share this to our community forum @ [codecrew.codewithchris.com/]
--Joash
Haahahhahahahahahah when u were searching for the icon, I CAN RELATE!!! 😂 Awesome tut btw!
Thanks for the video. SwiftData looks really nice!!
What was that app you pulled up that had a list of all the symbols and associated names?
I find it kinda funny I was asking "why the underscore on the parameter name?" as you kinda just glazed over it in the delete function and I HAD TO KNOW so I went and looked it up. Then a bit later you explain it for the update function.. I SHOULD HAVE TRUSTED YOU GOOD SIR.
SwiftData is pretty awesome though. I'm...struggling to get a good grasp on Swift. I've been doing C and C# for much of my life and something about Swift just throws me off. But your channel has at least put me in the right path.
Excellent teaching skills 😊
I do it now, with your tutorial. thanks.
Fyi, this is not showing up in UA-cam under your videos, nor did it pop up in my feed. I discovered it from your twitter post.
Our Twitter post was a bit... prematured! Oopsy!
@AdrienVillez
I am getting an error at part 8:07 "Missing argument for parameter 'id' in call" I'm using Xcode 15.0 and iOS 17. Can you explain what I am missing as I am new to swift and swiftdata.
I was able to figure out the issue with the addItem module had to use *let item = DataItem(id: UUID().uuidString, name: "Test Item")* after that everything else was smooth sailing. Great tutorial on SwiftData. Subscribed and can't wait to watch more videos. Thanks
great demo Chris, really liked the way you explained it. New sub here :)
Awesome, thank you and happy learning!
--Joash
thanks, I'm just going to use this in my project🙏
Have fun! Thanks for watching! - Iñaki
I see that this is about how to store list items on local storage, but how does one store simple variables such as an int?
Love Your videos!! I have started a project in SwiftData, but I can not get the @Query to filter on date?? I've checked all the forums, and many people seem to be struggling, but no real answers that work for me. Any advice on filtering on date in SwiftData??
This looks real easy.
Thank you very much. I have a question, if I add a variable to the model, will it break the model?
Good one bro , Thanks !
Thanks for watching, and thanks for learning with us! - Iñaki
Is there some kind of visual view integrated to Xcode to see the current database layout, entities, relations, and data and so on? Like pgAdmin for Postgres for example?
Hi, how I can use onMove modifier on Query?
Wonderful Video. Love it ♥
Thanks for watching! - Iñaki
so good video my bro
How would this work using the likes of a view model?
Brand new to Mac development.
Never used coredata.
Where can I find the rest of the tutorial that explains things like… how .onDelete creates these magical indexies , and why they swipe view shows up without any code, showing anything about swiping etc. thanks!
Hey I just started watching your videos and I was intrested your collection of keyboards that are always prominent in your videos. Would be cool to see a video talking about your keyboards or a setup tour.
Nice explanation, thanks a lot 😊
Glad you liked it
How can I connect to AWS Amplify Datastore using SwiftData ?
Is it like an embedded database? can you sync data from SwiftData to an online database like MongoDB Atlas?
No, SwiftData is not an embedded database, it's an object graph and persistence framework, more like an ORM. It uses SQLite as one of its persistent store.
You can sync data from SwiftData and MongoDB Atlas but it requires extra and redundant work, I wouldn't recommend it.
SwiftData comes with built-in support for iCloud syncing. If you need to sync data from your app to Mongo Atlas DB, I recommend using Mongo Realm instead of SwiftData (www.mongodb.com/docs/atlas/device-sdks/sdk/swift/). - Iñaki
@@CodeWithChris Many thanks for the detailed answer 🙏🏻
Why is everyone stuck with todo program? There are like millions of example online for todo program. Why not do user login and register and delete user using swiftdata. But thank you for this amazing tutorial.
Thanks!
Would love to see a video on sorting and filtering Query data.
Hey Chris do you know if Firebase can work with visionOS. It seems there’s only the options for iOS not for anything else
Hello @hassanportal5865
Unfortunately I'm not sure about the answer.
--Joash
Should we still use codable structs to decode JSON API responses or should we use the new codable @Model class to decode API responses? Which is better?
You can actually do both, but if you add the Codable conformance to your SwiftData model, you'll have to manually write the Decodable and Encodable conformances yourself, as derived conformance simply doesn't work out the box.
@Model is a Swift Macro, and it adds boilerplate code that does not conform to Codable (that's why derived conformance doesn't work).
Donny Wals has written a great article about it, you may want to read about it here:
www.donnywals.com/making-your-swiftdata-models-codable/
Have a good day! - Iñaki
@CodeWithChris Hey Chris, as soon as i typ in: "@Model", there comes a red message saying: "@Model requires an initializer be provided for 'DataItem". Please help. What did I do wrong?
Can you get XCode on MacBooks too, or just the desktop?
Hi @JustYe322,
Yes! Xcode run on any mac.
You can also check this link to see the minimum system requirements to be sure that your machine can working on the latest version available.
developer.apple.com/support/xcode/
Hope this help.
--Joash
At 8:00 when I tap I get a Preview Error message. HELP!!!!!!!
Hi, in the video Chris ran the app in the Simulator instead of using the SwiftUI preview.
There is an additional code setup required to make the SwiftUI preview work with SwiftData, but it doesn't simulate any persistence functionality that you might expect.
To run the app similar to the video, make sure to select a Simulator as your destination (on the top middle part of Xcode), then press Cmd + R. Xcode should build the project and launch the app in the iOS Simulator you chose.
Hope that helps! - Iñaki
It will have support for CloudKit?
"To provide automatic iCloud sync, SwiftData requires the CloudKit entitlement and an iCloud container. For more information, see Configuring iCloud services."
For more information, you can check out: developer.apple.com/documentation/swiftdata
Thanks for watching! - Iñaki
that was really cool. thx
Glad you liked it!
Thank you Chris that is good, I'm going to be undertaking in my second semester as part of my masters in IT the unit in iPhone software engineering. I hope they are up-to-date as you are!
Do you still need Identifiable protocol? Really good video thank you.
From another tutorial
‘SwiftData automatically handles the identification aspect of the model, eliminating the need for explicitly defining an id property or conforming to the Identifiable protocol.’
I'd still add a UUID (not a String).
That way, it allows you to separate out distinct models instances, even if they happen to share the same data.
It would be better for your own sanity, and debugging.
Nice.!!!
Hey! When I query my database and try to insert the variables like name, it throws up an error saying "Value of type '[my class]' has no member 'name'". Is there something simple I'm missing?
Hi! Sorry you're running into that!
Have you checked if there is a `name` property in your data model class?
You can declare it like how Chris did it on this timestamp: ua-cam.com/video/krRkm8w22A8/v-deo.html
Hope that helps!
- Iñaki
Can you use this in a MacOS application?
Hello @Kyriacos-ue5kt,
Indeed, you can utilize the new SwiftData API across all Apple development environments. It's not exclusively limited to iOS.
--Joash
In more complex applications we usually use different design patterns like the repository pattern and try to move away the functions from the view itself. How would you implement a repository pattern etc. with the SwiftData? :)
Hello,
Unfortunately, we can't answer you in the comment section but you can try joining and posting in our community: cwc.to/codecrew
-- Joash
Excelente
Hi Chris, can you make a video on how to write neat swiftui and code that can be read by other developers?
I made a video on this, but it's not specific to SwiftUI, but how to write good Swift code in general ua-cam.com/video/4hVyozTOSTo/v-deo.htmlsi=K8ORdCwzcDNpFPB9
I get a Preview Crashed error when I try to add a record to the model. Does anyone know why that would happen?
I'm pretty sure the code looks the same as Chris's code.
Does it show any error in the console log? If it does, you may wanna post about it in our developer community forum: cwc.to/codecrew
Someone might be able to help see what's wrong with your code or be able to determine what caused the issue. - Iñaki
hey chris im currently a new app dev, can data be stored in firebase as well as locally with swiftdata synchronously?
Firestore has a local data persistence feature, so you no longer need SwiftData to persist the data that you store in Firestore. - Iñaki
can someone help me please ..
i have a SWIFTUI application with a flow as follows: A(landscape orientation)->B(landscape)-C(portrait)->D(portrait). also when I navigate back from C to B it should turn back to landscape as B is in landscape. (I am using NavigationLink in my application to navigate)How do I achieve the portrait lock in swiftUI.
i tried the .onAppear{} and .onDisappear{} method.. (firstly it is no longer available on ios 16 and secondly it gives a choppy animation where the view does not expand fully to take the new rotated screen size; there is white space after it rotates)
Hello, @VladislavVaz!
Unfortunately we can't debug it for you in the comment section here but you can try joining and posting in our community: cwc.to/codecrew
--Joash
I keep getting a 0__abort_with_payload error and I've not found anything online that fixes it. Any idea? Thanks for the video!
Hello, @DefeatOG!
Unfortunately we can't debug it for you in the comment section here but you can try joining and posting in our community: cwc.to/codecrew
--Joash
wow! so much better than the coreData workflow.
So will swift data ever be compatible with older iOS versions or will it only ever be compatible for iOS17 and up?
I can't wait until this becomes the standard and we can shove coreData into the abyss. but if it's only ever going to be compatible for iOS17 and above then it's going to take some years right?
also, Chris - your teaching style is world class. You have the advantage of having a very easy voice to listen to.
I really do hope you make a "100 Days of Chris UI" or something in the future
When i type in line 29 i get error "Cannot find 'context in scope'. rest of code exactly as you typed it in? strange
Hello,
Unfortunately, we can't debug it for you in the comment section here but you can try joining and posting in our community: cwc.to/codecrew
--Joash
Until now I don't understand how to create a button that you can click on for moving to another view page in the app..
Hello,@napoleontsar! You may want to check this video to learn more about NavigationStack. ua-cam.com/video/7dnTHrLyFLc/v-deo.html&ab_channel=CodeWithChris
--Joash
Can SwiftData work on iOS 15 and above , bro?
No, SwiftData is supported in iOS 17+. You'll still have to work with CoreData if you need to support iOS 16 below. - Iñaki
Similar to useState in react native🤔
Except, actually native. And your app will feel like a real iOS app.
how would you use AI to automate this building process?
Unfortunately I'm not sure about the answer, @carolinetakam2677.
--Joash
Absolutely well explained, really simple compared to CoreData
Glad you like it! Thanks for watching! - Iñaki
For some reason my Xcode crashes after clicking add items.
Hello @babida9113!
Unfortunately we can't debug it for you in the comment section here but you can try joining and posting in our community: cwc.to/codecrew
I had the same problem, were you able to find a solution?
Darn ... too bad this is unusable while working with MVVM, I tried today to somehow bend it to my will ... guess what ... went to core data after ready long struggle.
Nice work on separating behavior from view. Too few examples take the care to demonstrate clean code. You, sir, have saved many headaches by teaching good practices
Glad you found it helpful! Thanks for learning with us! - Iñaki
Not a word about what if user changes his phone.
you misled people by using the swiftlet icon. shouldnt have used it. i was looking for swiftlets video. shame.
Thank you @CodeWithChris
Hey Chris, I have a question for you. After watching wwdc 2024, i see that swift data now supports more operations, like history tracking and custom model configuration implementation. Would you say that SwiftData is now ready to be used? Also, did they resolve a bug, when you decorated your model with @Attribute(unique) that the app crashed ?