This is an IOS weather app that gives users live weather information based on their current location or the location they enter to a text field. The current location is gotten through the phone’s GPS using CLLocationManager. This live data is fetched from the OpenWeather API and parsed into a swift object to be used in the program. The app is dark-mode enabled and it implements Apple's delegate design pattern. Also, in compliance with privacy policies the app prompts users to opt in or out of sharing their GPS location before phone location is retrieved. This app was made for iphones and additional features as well as an android version will be released in the coming months.
Over the course of this project, I encountered several challenges. One of them was understanding the delegate design pattern to get the textfield to alert the ViewController when a particular action was being done. I watched videos repeatedly to understand how protocols and the delegate design pattern worked in harmony. Another frequent error I encountered was “terminating with uncaught exception of type NSException”. This error occurred because I tried to update the UI inside a completion handler. I read the documentation and found a solution using DispatchQueue.main.async to call the main thread to update the UI.