Sigmoid Function Explanation
25:33
Writing End-to-End Tests Part 4
18:10
Writing More Unit Tests Part 3
11:13
Writing Better Unit Tests Part 2
10:50
Stop Writing Useless Tests! Part 1
12:31
SwiftCraft Conference 2024
2:13
2 ай бұрын
Пікірлер
@Iwasee
@Iwasee Күн бұрын
Hello, thanks a lot for the video ! I have a question : in the unit tests, I have the feeling that you are only testing the logic of the addIngredient() method, but not SwiftData itself. If I remove the "context.insert(recipe)" line, it works just fine. So is that normal ? Or maybe the test logic here is if the insert fails, the test fails accordingly ? Thanks for your time
@josejaimefelixgarciagarcia8884
@josejaimefelixgarciagarcia8884 Күн бұрын
Best video out there. Thank you
@Technology4Seniors
@Technology4Seniors Күн бұрын
Excellent teaching style on a complex topic. Your step-by-step instructions allowed me to create my own working sample.
@adewolesamuel1311
@adewolesamuel1311 3 күн бұрын
Hello, I hope this message finds you well. I would greatly appreciate a few minutes of your time for a constructive conversation regarding your Udemy course. If possible, would you be available for a quick call? Thank you in advance for considering my request.
@hedgehog_fox
@hedgehog_fox 4 күн бұрын
Thank you!!!
@CoolShark2th
@CoolShark2th 5 күн бұрын
Great tutorial. I was applying that to my current project, and I ran into a couple errors. I have a model file Thing. I have my CoreData file ThingModel, in which my entity is defined as ThingRecord. I have my view model ThingViewModel. I have my record extension ThingRecord+extensions. In ThingViewModel.fetchThings(), I am seeing an error which says: Value of type 'ThingRecord' has no member 'toThing'. Here is that method: -------- func fetchThings() { let request: NSFetchRequest<ThingRecord> = ThingRecord.fetchRequest() request.sortDescriptors = [NSSortDescriptor(keyPath: \StoolRecord.when, ascending: false)] do { let thingRecords = try context.fetch(request) things = thingRecords.map { $0.toThing() } } catch { print("Fetch failed! \(error.localizedDescription)") } } -------- Here is my record extension: -------- import CoreData extension ThingRecord { func toThing() -> Thing { return Thing( id: self.id, when: self.when, type: self.type, amount: self.type ) } func update(from thing: Thing, context: NSManagedObjectContext) { self.id = thing.id self.when = thing.when self.type = thing.type self.amount = thing.amount do { try context.save() } catch { print("Failed to save context: \(error.localizedDescription)") } } } -------- When I type in the the following line in ThingViewModel.fetchThings: things = thingRecords.map { $0.toThing() } I get this message: This method is defined on ThingRecord, and may not be available in this context. I get it that I need to change the context somehow, but I am super-new to Swift, and I have no idea. Help, please.
@duvessashny419
@duvessashny419 5 күн бұрын
Mine change into "Bad CPU type in executable". Can you please help me? Please...
@bm-2004
@bm-2004 6 күн бұрын
So you skipped the enter Core Data Provider portion, and the rest are paid members only? If your videos are just advertising for your business, bait and switch, you should clearly state it. Dont' waste our time, please.
@deadpoop_0279
@deadpoop_0279 9 күн бұрын
This is like a bad dream I had lol
@gunseliunsal9100
@gunseliunsal9100 11 күн бұрын
Thanks!
@HarrisonCarroll-r7d
@HarrisonCarroll-r7d 12 күн бұрын
I purchased your course in supabase for iOS developers. It's a really good course but I want to learn to reset a password can you cover this please in the course? Im looking forward to Budget app authentication and other sections soon.
@azamsharp
@azamsharp 10 күн бұрын
I will see if I cover it. The main issue is that for anything related with SMTP, Supabase only allows 2-3 emails per hour. So this makes it very hard to test.
@HarrisonCarroll-r7d
@HarrisonCarroll-r7d 10 күн бұрын
@@azamsharp Thankyou replying i appreciate it. Ive been learning swiftui for like a year and I'm still a beginner. I really want to release my first app with supabase please teach us how to use Supabase with resetting a password. You coding is really good and you would be the only developer to cover this on youtube and Ive looked everywhere online and Im sure many other people would be interested too. Your Supabase course is the best one definitely.
@546pvp
@546pvp 13 күн бұрын
Swift, for anybody wondering
@wilderlopezelias7319
@wilderlopezelias7319 13 күн бұрын
Very good series of tutorials on Supabase, about including the Supabase framework as embedded content I think it was because when you had to add the Supabase frameworks you didn't notice that by scrolling down you could find Supabase itself, and there you could select it and you didn't need to include it manually. I was curious why the Supabase itself didn't appear and I had to do it manually and it was just that detail 😂
@user-jo4rj9qt9t
@user-jo4rj9qt9t 15 күн бұрын
Great video ... !!! One question, since I would like to add a [MKLocalSearchCompleter]. Are you able to show incremental advice on how to complete a search location list in a separate video ... ?
@MrBranh0913
@MrBranh0913 16 күн бұрын
Umm some backends are too large and expansive to really ever interact with front end at all. Full stack is really a thing for smaller platforms or systems. They don’t exist on large platforms
@gregdurfee1915
@gregdurfee1915 18 күн бұрын
One of the things this video reminds me of, is the built-in obsolescence of the material learned in the pursuit of a technical degree. It's generally useful for learning the steps and disciplines of technical problem solving. But the rate of evolution of programming languages like Objective-C to Swift to SwiftUI, for example, would make evolving college textbooks impossible. It just isn't anything like Calculus.
@BIOHAZARD_V2
@BIOHAZARD_V2 18 күн бұрын
This video helped me out so much! This is incredible on how to set up dynamic predicates that I wasn't able to find elsewhere!
@KingBeyu
@KingBeyu 19 күн бұрын
I am reaching out to introduce our exclusive Udemy course promotion service. Through our tailored marketing approaches, we guarantee enhanced visibility for your course, a surge in enrollments, and a significant revenue increase. Would you be available for a brief call to discuss how we can collaborate effectively to enhance the success of your course?
@martygo
@martygo 19 күн бұрын
Useful video. Thanks.
@__Imran__
@__Imran__ 25 күн бұрын
Your courses are great. I also watch your all courses in Udemy. Can you provide us a course with complex UI Designs of Different types in SwiftUI? That will be great way to learn about SwiftUI design principles And I am building the clone app watching your videos with SwiftData instead of CoreData
@abdulyasin_iOS
@abdulyasin_iOS 26 күн бұрын
Bakwas -- BAK WASH
@Jakirseu
@Jakirseu 28 күн бұрын
You did a great job <3 Only tutorial that covers everything to implement a payment gateway in the SwiftUI app. Thank you so much.
@azamsharp
@azamsharp 28 күн бұрын
Glad you enjoyed it!
@michaweglarz8791
@michaweglarz8791 28 күн бұрын
Excellent tutorial. It was really helpful. Thank you!
@jangelGuerrero
@jangelGuerrero Ай бұрын
Great video even in 2024, thanks. Once logged in, how do you go to the HomeView()? Thanks.
@azamsharp
@azamsharp Ай бұрын
You will have to do programmatic navigation to navigate to the HomeView. Check out my programmatic navigation videos on KZbin.
@hugofernandez2344
@hugofernandez2344 Ай бұрын
I am following your example and I am able to connect to mongo atlas using the same connection string from java but not from your example, it looks similar as your connection string by the way, I got this error: "No hosts could be connected with, therefore no queries can be sent at the moment: The connection string could not be used to connect to a host.."
@vince-the-prince
@vince-the-prince Ай бұрын
Super helpful!
@book6202
@book6202 Ай бұрын
I have questions about architecture, As you said create different observable models (view Model) for a single view if needed depending on nature and requirements. Let's suppose we created multiple observable models for a single view and how those models communicate with each other? If modelA need to access some property from ModelB ?
@azamsharp
@azamsharp Ай бұрын
There are different ways of handing this scenario. If ModelA needs the same data as ModelB then ModelA can use the same service (HTTPClient) resource to fetch that information. It does not need to be a new request, you can add a caching layer in HTTPClient so it can return the cached data. If ModelA depends on the data resulted from some operation performed by ModelB then in those cases you can access both models in the View layer and then use ModelB to get the data and after that you can pass the data to ModelA in the View layer.
@rahuljamba5846
@rahuljamba5846 Ай бұрын
Really, this video is crystal clear about macros basic, Thanks a lot azam sharp, Realy you have sharp mind. Please keep it up.
@my_wave_app
@my_wave_app Ай бұрын
thanks for this video it really helped me to build my mobile app (influencer data mobile app dashboarding solution,) which is now live! it has been few days only but this video was very helpful! API was a bit trickier but could make it work somehow :) cheers
@iozturkeri
@iozturkeri Ай бұрын
[BUG} when user toggles one reminder to set it complete, then taps on another to set it complete, the first one does not register. Reason is there is only one Delay task created for the whole view. POSSIBLE SOLUTION: previously the delay was created inside ReminderCellView, then we refactored it into ReminderListView. Moving the delay object back inside the ReminderCellView will make each reminder to have its own delay, therefore one reminder interaction will not cancel out the reminder interaction of another. [BUG] the reminders inside the Completed show the reminders as incomplete (the circle empty). The reason, inside the ReminderCellView the checked property is a @State var and set to false, instead of part of reminder object that is passed into it. POSSIBLE SOLUTION: remove @State checked variable and use the view to use reminder's isChecked property.
@azamsharp
@azamsharp Ай бұрын
Both bugs are fixed in future videos.
@nileshjdarji
@nileshjdarji Ай бұрын
Very nice explanation of using enums with SwiftData. Exactly what I need. Thank you Azamji.
@mario_luis_dev
@mario_luis_dev Ай бұрын
June 2024. Does the SwiftData enum filtering issue still exist? I’ve been having some trouble getting it to work myself and then bumped this video.. Need a sanity check lol
@Aronskii
@Aronskii Ай бұрын
I for the life of me can't figure out why it doesn't like classLabel = result?.classLabel ?? "" it is telling me the model output has no member of 'classLabel'
@TylerDebnam
@TylerDebnam Ай бұрын
Woo hoo! Thanks for doing this with SwiftUI and SwiftData! Awesome as always!
@madtrader
@madtrader Ай бұрын
Thanks! how to preview views using @Environment variables?
@iozturkeri
@iozturkeri Ай бұрын
The navigationTitle of AddMyListView has to reflect the mode that is in, if it is in editing mode it shouldn't be "New List" but either "Edit List" or the name of the myList object. I think it is easily solvable by a ternary operation myList being nil or not and setting the value accordingly.
@azamsharp
@azamsharp Ай бұрын
Yes. You can easily use ternary operator to fix this issue.
@tsomuk
@tsomuk Ай бұрын
Good video, thanks . Can you tell me how do you draw on the screen during the video?
@azamsharp
@azamsharp Ай бұрын
Demo pro
@tsomuk
@tsomuk Ай бұрын
@@azamsharp thanks a lot!
@iozturkeri
@iozturkeri Ай бұрын
[Bug] In the MyListDetailScreen, if user checks a reminder (to complete it), then toggles another reminder before 2 seconds delay ends, then the action to check the first reminder complete does not get performed, since the second reminder check action cancels the action of the first reminder in the Delay.
@azamsharp
@azamsharp Ай бұрын
This will be fixed in future videos
@GuyIncognito-ng2mq
@GuyIncognito-ng2mq Ай бұрын
Is it true that this could also be used to avoid making API request to a server every time you refresh your preview, since doing it this way you can cache a single response and then reuse it for all your previews? It would also imply that you won't need to mock the data anymore to accomplish the same
@azamsharp
@azamsharp Ай бұрын
For previews, I always use Mock Data which can come from a JSON file. I have a video on that too: kzbin.info/www/bejne/e6rGqH-uibpge6Msi=3ujgb4z-5Ou2OVbm
@antonlebedev2890
@antonlebedev2890 Ай бұрын
Big thanks to you, sir) Your video has helped me to convert my Xcode 15 code to Xcode 11😅
@M_A_D_L
@M_A_D_L Ай бұрын
Awesome! That’s exactly what I’m looking for for my final project! How do I do that?
@adewolesamuel1311
@adewolesamuel1311 Ай бұрын
Hello! I'm thrilled to tell that im really impressed with your Udemy course. Our offer is to help increase enrollments and generate positive reviews plus more revenue. Let's connect & explore customized strategies to elevate the course even further. I'm eager to discuss on this exciting opportunity with you.
@AndresGutierrez-nb6qr
@AndresGutierrez-nb6qr Ай бұрын
I'm not getting the 304 status in my app, and I believe it has to do with the "\" character I get when trying to save the string to my defaults: po httpResponse.value(forHTTPHeaderField: "etag") ▿ Optional<String> - some : "W/\"5e1cfa677912828303fbd3abf98c0d4c\"" Any idea how to avoid this?
@AndresGutierrez-nb6qr
@AndresGutierrez-nb6qr Ай бұрын
I see my error is not because of the escape characters, but because I did not implement the cachePolicy you did. I found that I did not need to check the ETag, since this is done by default with URLSession 🤯
@Lammax2012
@Lammax2012 Ай бұрын
Would be nice to get some template code for this lesson.
@azamsharp
@azamsharp Ай бұрын
For code you can check out my courses on azamsharp.school.
@Lammax2012
@Lammax2012 Ай бұрын
@@azamsharp unfortunately it's impossible for me :( you know, all these sanctions....
@mehedi-angkur
@mehedi-angkur Ай бұрын
Good one. need more session like this.
@massimilianobellucci
@massimilianobellucci Ай бұрын
The FoodTruckModel implemented in the Apple’s code example in my opinion can be called Model as Apple is doing; that’s because it is exactly what it is, the Model of the screen. Then, inside the model, several entities describing the different data structures are coexisting. I want to say this model is also implemented as a Façade pattern.
@azamsharp
@azamsharp Ай бұрын
Yes. It is a kind of a Facade that provides data to the entire application. Apple is using a single Model but we can always add more Models for larger apps. Those Models should created based on Apple boundary and not because we added a new screen.
@kayafatih55
@kayafatih55 Ай бұрын
Thank you for your explanation. But swiftdata uses too much CPU. Especially when you synchronize with iCloud, usage exceeds 150%. So it's time to move to coredata
@azamsharp
@azamsharp Ай бұрын
Interesting! Do you have a special use case, code sample etc to reproduce this issue?
@massimilianobellucci
@massimilianobellucci Ай бұрын
Hi Mohammad, I think the point you are trying to raise can be explained in an easier and maybe better understandable way. 1) In a UI framework using declarative approach the View as purerly intendended is no longer existing. What you are doing is just define your expected UI layout and declare the connections/binding with the values of properties within the data structs. 2) View is not something from where you subclass what people call views, as we all know a struct can’t inherits, it is not a class. This should light on something in the brain of people. View is a protocol to which you conform just to provide the implementation of body ViewBuilder, again take in you mine the ViewBuilder keyword, you are definying the layout in a builder, you are not drawing Views. 3) Try to image something a bit different… create a struct which will act as jointure between your data and your layout; just for fun, name it MyScreen and do not conform to the View protocol yet. Put in this struct everything you need to handle the local state as you did in the old approach to ViewModel, so that inject your HTTPClient, add your @State properties, your methods to handle api call through the HTTPClient and so forth. Now, add to your code an estension to conform at View protocol and declare your expected layout and its bindings. extension MyScreenViewModel: View { var body: some View { // you declare and bind your layout there } } 4) you still have the possibilità to move away from the Screen the model and the logic as in the example suggested by Mohammad creating a separate struct and moving all you need inside it.
@azamsharp
@azamsharp Ай бұрын
Thanks! But I would not create VM based on the screen that I just added. It should be added based on the bounded context of the application and when a new source of truth is required. That is the essence of MV Pattern.
@developerylabz6093
@developerylabz6093 Ай бұрын
Yes every screen has it's own ViewModel. For us every screen is a complete app with it's own build env. You are correct!
@bjp_for_2024
@bjp_for_2024 Ай бұрын
code?