Intro to SwiftData - Model, Container, Fetch, Create, Update & Delete
HTML-код
- Опубликовано: 2 июл 2024
- Go to squarespace.com/seanallen to save 10% off your first purchase of a website or domain using code SEANALLEN.
This is an introduction to SwiftData new in iOS 17 and macOS Sonoma. SwiftData was introduced at WWDC 2023 and is the successor to Core Data. SwiftData is a way to persist your app's data locally on device or in iCloud to sync between devices. This video introduces you to the basic concepts like @Model, containers, context, fetch, create, update, and delete.
My iOS Dev Courses:
seanallen.teachable.com/
WWDC 2023 -Model your schema with SwiftData:
developer.apple.com/videos/pl...
X (Twitter):
Sean Allen - / seanallen_dev
Hired.com:
hired.com/x/1n01g
Book and learning recommendations that help out the channel if you decide to purchase (Affiliate Links):
Paul Hudson's Hacking With Swift:
gumroad.com/a/762098803
Donny Wals - Combine:
gumroad.com/a/909014131
Mark Moeyken’s SwiftUI Books:
www.bigmountainstudio.com/swiftui-views-book/fzc51
Objc.io Books (Thinking in SwiftUI & Advanced Swift):
gumroad.com/a/656585843
Timestamps:
0:00 - What is SwiftData?
1:18 - Create Project & Model (@Model)
5:35 - Create & Explain Container (2 ways to do it)
8:42 - Separate Container Object (Configurations)
12:03 - UI Walkthrough
14:29 - Create Expense Items
17:33 - Fetch Expense Items (@Query)
18:39 - Delete Expense Items
20:20 - Update Expense Item
24:52 - Query Predicates (Filter Results)
#swift #softwaredeveloper #iosdeveloper Наука
Learn more with my iOS Developer courses at seanallen.teachable.com
thanks boss. I do like content creators who doesn't read the course material but instead is thinking logical, it gives me the vibe that you a pro
I appreciate that!
This was by far the best SwiftData video I've seen. Thank you!
Honestly, what a fantastic video. Clear helpful, and patient.
Learned so much of the basics without diverting too much into wild syntax and hard to comprehend coding. Really great work on this video it's perfect!
Your comment for the RUclips video on Swift Data could be phrased like this:
I've watched several tutorials on SwiftData, but this one stands out as the best introduction to the topic so far. Sean has a unique talent for simplifying complex concepts and making them easily understandable. Thanks Sean. 🙌"
To the point, not overdone, not underdone and concise and clear. Great tutorial. This has everything you need to know to get started working with SwiftUI and SwiftData with good explanations
This is just incredible, your level of mastery and ability to step through each portion with great clarity is unheard of!
I appreciate the kind words and glad you liked the video!
I've been watching for a while, I like Sean's teaching style - he has a great way of making complex concepts simple and understandable
I appreciate the long-time support, Andrew!
Great video, as usual. Would be great a part 2 explaining the iCloud sync with SwiftData
Yes I would love part 2! I have CloudKit enabled on a SwitData project but I'm not understanding how to get it to sync.
More Swift Data videos in the future for sure. No promises on when, but there's a few on my to-do list.
You have such a clear way of explaining concepts. Great work! Looking forward to the new course!
I appreciate the kind words, Kuldar!
Best tutorial! ive saw many 8h tutorials, but this is the most simple and powerful
Hey Sean, I just wanted to let you know how much I appreciate the way you present and explain new things. Your videos make complex topics seem so simple and understandable. It's clear that you have a talent for breaking things down. Thanks for making data storage seem so much easier in your beautiful way. Keep up the fantastic work!
I really appreciate the kind words and it's motivation to keep going 💪. Glad you're enjoying the content!
I just discovered your channel and I’m watching your Swift UI Fundamentals Video. You keep dropping these fire videos which is helping me understand SwiftUI a lot. Thanks soo much and I greatly appreciate your valuable work.
Welcome to the channel! Glad you're enjoying the content :)
Dear Sean, thank you for that wonderful video. Love your teaching style, it’s easy for me to understand and follow you. Just excellent.
Glad you like my style!
Just started to dip my toes into iOS development and I wasn't aware how recent some of the things I try to use are. It's so hard to find guides. So this is perfect.
Happy to help 👍
absolutely clear in the essential. the best teacher ever 👍 regards from France
Great, that covers a lot of information with swiftData and looking forward to your next video.
Glad you liked it!
wow! that's a great video, yeah give 30 videos please. Would be great one about video or media in general? how to persist it ( i know, probably that's 50 videos long too XD)
Haha, yeah. SwiftData is a huge topic that will continue to grow as Apple builds upon this initial version.
Thank you!
Omg. I asked, and I received!!
Thanks, Sean!
Happy to help!
Thanks for the intro, that is extremely useful.
Glad it was helpful!
I did a bit of iOS development when Swift was brand new and it's incredible how far i went.. so much simpler nowadays. I was thinking about side project with nice offline functionality and I though about CoreData and how complex it is. This is such a good news to see there is beautiful new "SwiftUI" way how to do it. Thanks so much for this clear introduction! :)
Yes... this will be a huge improvement over Core Data.
Sean! Back working on an iOS app and this is exactly what I needed. Haven’t coded since we spoke probably like 5 years ago when ARKit first came out.
Excited to put it to use
Hey Allen! Welcome back. 👋
Thank you Sean, you are the best teacher with the best content ever :)
Thanks for the kind words :)
Very helpful! Thanks for sharing it!
Happy to help!
Man... your explanation is top notch! You know where to put accents! Very well done 👍
Thanks! Glad you like my teaching style.
Love your style, Sean. You explain things well and make it understand. Thanks!
*understandable.
I appreciate that! Glad you like my teaching style.
A+ content for sure, thanks Sean,
I appreciate that! Glad you liked it.
thank you bro
clear and smooth 🥰
You're welcome!
Crystal clear explanation
Glad you liked it!
Exactly what i wanted!
Hope ya like it!
Thanks for the video!
Happy to help!
Good lesson. Thanks
Happy to help
Hi Sean, I've been watching some videos on your channel, and your method of presentation is excellent and easy to follow, I'm completely new to iOS development and was wondering if you have a video or tutorial that has a complete beginners guide?
Thanks Sean. Great tutorial as usual 😊
As a beginner it looks far easier to begin than Core Data 😅
Yes... it's much easier. It needs another year or two to mature, but it's a great start and clearly the future.
Thank you so much! Idk if you already made this video, bc I couldn't find on the channel but, if you could make a video to help use swiftData with view models that would be awesome! Thanks again
That was super useful thanks.
Glad to hear it!
Are you on Threads,@@seanallen ? I'd like to follow you. `
Thanks for the video.
Two questions:
- How do you work with related one-to-one and one-to-many models?
- How to bring the logic of working with storage into ViewModel?
Awesome. Can you show it using Previews instead of the Simulator? Thanks
Great video, I've been working on an app with SwiftData since it was announced while doing the #100DaysOfSwiftUI challenge. You were wise to wait till now before making a video because there were some bugs when you had custom types and enums haha. Anyways, thanks for the example because now I can change my edit view, Apple's example app of updating an existing SwiftData object isn't like this so now I can clean up my code a bit.
I agree. This is definitely a great start for SwiftData, but it needs another year or two to mature.
Do you have a video on how to use swift data and preload the database and the data?
Can you make a video showing how to implement swiftdata outside of a view? I’d also like to see fetch descriptors explained if possible.
Great content! Very useful but as everything that introduced newly, to use them daily, we need to wait until iOS 17 is used more.
Yes. And it's probably needs another year or two to be fully ready for complex projects.
Incredible video man! First time seeing anything from your channel! Been slamming my keyboard trying to get through UI mismatching and out of date CoreData tutorials. I would love to purchase a SwiftData course if you have one. Would you post on Udemy maybe?
Glad you liked it! I don't have a Swift Data course (yet) because it's pretty new and I expect a lot of updates and changes with iOS 18 this year.
❤
Thanks I have been enjoying your videos. Is this one available to grab as a starter
I don't have starter projects, however you can grab the completed source code at seanallen.teachable.com/p/source-code-youtube-videos
How do we perform CRUD outside the view, example periodically check for new data from the server, download it using background tasks but now it needs to be persisted to local database
Container-Context in SwiftData is really a mirror of an CoreData Persistent store and ManagedObjectContext with sugar of autosave (?).
Yup. That's it.
can you tell me how I connect sql based db to swift data.... video is useful. thank you
Thanks for video. I think IOS development very easy than Android development. This video was very helpful
Glad it helped!
Could you make a video about becoming a freelance app dev?
Awesome video, SwiftData looks really good. The only thing I’m wondering is: What happens to an Expense when we assign it to the ExpenseToEdit variable and then dismiss the edit sheet? Does that Expense just keep sitting in the variable until we assign to it a different Expense (at which point I assume the sheet would trigger again)? Or does Swift automatically set the value to null again after we dismiss the sheet?
It will hold the value until we assign it a different one (at which point would trigger the sheet again with the new information)
Please make some vidoes of data structures and algorithms in Swift
That's out of my area of expertise. I haven't interviewed for a job in a long time and that's the only time I ever used or studied that topic.
Does anyone know if there is a way to query based on a State var? Say there is a button where the user can set the month with the intention of viewing every expense pertaining to just that month. I don't think we can just set the month as a state var and use it in the Query filter
I need to be able to migrate my CoreData app to SwiftData but it's just not there yet... CoreData is still WAY more sophisticated, particularly for large complex databases with lots of > relationships, etc. Fingers crossed they'll make it possible in the next year....
Agreed... give SwiftData another couple years. It's clearly the future, but not quite there yet for complex projects.
Suggestion: if u skip so much code video for ui, give the code to copy it, so we can do it fast too
Hi, I’m continuing to study SwiftData by repeating all the tutorials but I can’t understand one thing:
I have to create an app with a default list (which therefore no data needs to be added) and this list is contained in a toggle. How do I make only the toggle state persistent?
want to create SwiftData in a Framework not in Host App. where do we specify the model container?
in case where you are handling with multi model how we are going to identify which is getting triggered in view. just a little confusion here as i am a basic learner.
Does anyone know if I have to care about unique constraints? Do I have to check if it exists before inserting it? Currently, it is working. It won't add another one. Is SwiftData handling it?
Hi, how I can use onMove modifier on expenses?
what did you mean by ExpenseCell ?
Hi Sean! Thanks for your SwiftUI videos, for all of them. Are really helpful!,. Please, Can you share your Xcode theme? Thanks in advance 🫶🏻
Happy to help. The theme is called Midnight. it's a default one in Xcode. The only thing I changed was the color of the comments. I made them grey.
Anyone found a way to back up the data. Not sync it for multiple devices, but create a backup file of the data to iCloud or dropbox, then restore from that file if needed.
Hi Sean, really informative video. Is there a way to get data from a network request and transform the json straight into a swiftdata model with Codable?
Yes... in SwiftData your models are the same models you would use in normal Swift code.
What is with Dynamic Filter
This really is amazing but it put me off using it atm because it's obviously only from iOS 17 & above, I'm using FMDB right now
New to SwiftU here. Is it SwiftUI best practice to keep the .sheet views code inside the same view as the content view or better to have them in their separate views? So instead of 1 view you would have 3, if that makes sense.
I'm not sure I follow what you mean. Do you mean within the same file, or within the actual View?
@@seanallen Sorry I think I meant file.
How can I use the context outside swiftUI? Like if I want to manage in a different class an Object stored in a context
In the video I show you how to create a container object. Once you have that object you can use it outside the view hierarchy (like a SwiftDataManage singleton for example).
I never understand the do/try/catch blocks because all tutorials force unwrap or put in comments saying “// do some code here” lol
If @Query results change, will the view invalidate like with @State and re-render?
Yes, that's how it should work.
How about sharing data between an app and widgets?
Use an app group and put that ID in the container configuration parameter.
can you talk about vision os?
I have an overview video here - ruclips.net/video/V-mIIcvYrh0/видео.htmlsi=dpjgdJwFYlQQ2o65
please my friend make tutorial based on new swiftdata and swift ui, like recent ones, 10 hours each
Oh, just a casual 10 hour tutorial??
Would you use this over Realm?
I've never used Realm before, so I can't give a valid opinion here.
okay, thanks!@@seanallen
How can I save a dict?
is this only work in iOS 17?
Yes, this requires iOS 17 and above.