Mohammad Azam is a veteran developer who has been professionally writing software for more than a decade. Azam worked as a lead mobile developer for many fortune 500 companies and played an integral role in their success. Azam is also a top Udemy instructor for mobile with more than 40K students. Apart from Udemy, Azam is also a frequent contributor to LinkedIn with top rated courses. At present Azam is a lead instructor at DigitalCrafts, software bootcamp. Azam has trained developers who are now working at companies including Apple, JP Morgan Chase, Exxon etc.
Azam is also an international speaker and has been professionally speaking since 2006. In his spare time Azam likes to exercise and plan his next adventure to the unknown corners of the world.
Hello! Thanks for lessons. It's useful for me :) I think that I found problems not showing Today reminders. It's solution: var calendar = Calendar.current calendar.timeZone = TimeZone.current let today = calendar.startOfDay(for: today) let tomorrow = calendar.date(byAdding: .day, value: 1, to: today)
why doesn't it open a new object creation view?... enum PatientRoute: Hashable { case list case create case detail(PatientData) @ViewBuilder var destination: some View { switch self { case .list: PatientsListView() case .create: EditPatientView(editPatient: PatientData()) case .detail(let patient): EditPatientView(editPatient: patient) } } }
That is a great question. In order to pass Binding your PatientRoute needs to add another route like update(Binding<Patient>) and then you need to implement Equatable and Hashable.
no fucking way, i haven't tried this, but i've been trying to figure out how to UIColor, if this work, u r a saint, i couldn't find docs for this anywhere, everyone was saying... on stack over flow to create functions to convert uicolor to rgb values & save the individual r,g,b values into coredata for every color... insane
Gotta say, the whole web-based CloudKit management system is horrible. I don't dare touch anything, lest it all falls down in a heap and my customer data is screwed forever. Data migration -- i.e. adding new features to an app -- must be an absolute nightmare.
Thanks for the free course! Appreciate it. Also - I'm looking to set up a swift native app (SwiftUI, SwiftData, etc) but instead of using cloud kit, saving data to an AWS serverless setup. Perhaps using API Gateway, lambdas and dynamoDB, or even using SAM and Amplify. Any pointers?
@@azamsharp Thanks, maybe I should start there rather. MY reason for AWS is I'm building something that will hopefully be used with Android too eventually. Thanks for your reply!
How can I do a backward infinity scroll? i would love to have a list that all the content starts on toop, and most recent shows on the bottom, but I can load older content on top of list within a smooth animation,
Thanks for this. My preference is for views that are given the minimum amount of information to work with. e.g. a "New User Screen" should not have access to the source of truth. It should be given, if anything, only the minimum i needs to do its job, and should return (through a binding or callback) the result. e.g. a struct containting the new name and address. That result is then fed to the source of truth (the UserStore) for processing, storage. This also helps with mockups and previews and testing... because a view doesn't need to be given a source of truth to be tested.
It depends on how you are planning to use the NewUserScreen. When I implement Screens, I don't plan to reuse them. For reusability I create views. Screens are Views but they are created as container to host smaller views. So for a screen to access a source of truth it is perfectly fine, if you use screen as non-reusable view.
Great video!! I cant understand why this video doesnt have more likes. So simple, elegant and practical and leaves room to refactor for structuring and more. Please continue to create more like these!
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