From 2ddd1c98c49370fd9a8585ae07dade78121ec7a0 Mon Sep 17 00:00:00 2001 From: Ramon Seoane Date: Fri, 30 Jun 2023 20:18:36 +0200 Subject: [PATCH 1/2] =?UTF-8?q?A=C3=B1adidos=20cambios=20a=20la=20app=20pa?= =?UTF-8?q?ra=20sacar=20la=20API=20key=20del=20proyecto=20en=20un=20plist?= =?UTF-8?q?=20de=20claves?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 94 ++++++++++++++ Clima.xcodeproj/project.pbxproj | 69 +++++++--- Clima/AppDelegate.swift | 10 +- Clima/Assets.xcassets/Contents.json | 6 +- .../background.imageset/Contents.json | 34 +++-- .../background.imageset/background.png | Bin 102322 -> 0 bytes .../background.imageset}/dark_background.pdf | Bin .../light_background 1.pdf} | Bin .../background.imageset/light_background.pdf | Bin 0 -> 11030 bytes .../weatherColor.colorset/Contents.json | 56 ++++++++ Clima/Clima.entitlements | 12 ++ Clima/Controller/WeatherViewController.swift | 120 +++++++++++++++++- Clima/Info.plist | 2 + Clima/Model/WeatherData.swift | 25 ++++ Clima/Model/WeatherManager.swift | 89 +++++++++++++ Clima/Model/WeatherModel.swift | 42 ++++++ Clima/View/Base.lproj/Main.storyboard | 76 +++++++---- 17 files changed, 569 insertions(+), 66 deletions(-) create mode 100644 .gitignore delete mode 100644 Clima/Assets.xcassets/background.imageset/background.png rename Clima/{ => Assets.xcassets/background.imageset}/dark_background.pdf (100%) rename Clima/{light_background.pdf => Assets.xcassets/background.imageset/light_background 1.pdf} (100%) create mode 100644 Clima/Assets.xcassets/background.imageset/light_background.pdf create mode 100644 Clima/Assets.xcassets/weatherColor.colorset/Contents.json create mode 100644 Clima/Clima.entitlements create mode 100644 Clima/Model/WeatherData.swift create mode 100644 Clima/Model/WeatherManager.swift create mode 100644 Clima/Model/WeatherModel.swift diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..11c5ea08 --- /dev/null +++ b/.gitignore @@ -0,0 +1,94 @@ +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## User settings +xcuserdata/ + +## API keys +/Clima/Keys.plist + + +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 + +## Obj-C/Swift specific +*.hmap + +## App packaging +*.ipa +*.dSYM.zip +*.dSYM + +## Playgrounds +timeline.xctimeline +playground.xcworkspace + +# Swift Package Manager +# +# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. +# Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + +.build/ + +# CocoaPods +# +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# +# Pods/ +# +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace + +# Carthage +# +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts + +Carthage/Build/ + +# Accio dependency management +Dependencies/ +.accio/ + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/#source-control + +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ diff --git a/Clima.xcodeproj/project.pbxproj b/Clima.xcodeproj/project.pbxproj index 076632ce..2b20dc61 100644 --- a/Clima.xcodeproj/project.pbxproj +++ b/Clima.xcodeproj/project.pbxproj @@ -3,22 +3,29 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 53; objects = { /* Begin PBXBuildFile section */ + 1260ECE829E18F9F002569CF /* WeatherManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1260ECE729E18F9F002569CF /* WeatherManager.swift */; }; + 126AAEC929E889E900173620 /* WeatherData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 126AAEC829E889E900173620 /* WeatherData.swift */; }; + 126AAECB29E9D38400173620 /* WeatherModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 126AAECA29E9D38400173620 /* WeatherModel.swift */; }; + 12BE3F1C2A4F3D7D0078E526 /* Keys.plist in Resources */ = {isa = PBXBuildFile; fileRef = 12BE3F1B2A4F3D7D0078E526 /* Keys.plist */; }; ADAA27B1231BBFAF00365194 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADAA27B0231BBFAF00365194 /* AppDelegate.swift */; }; ADAA27B3231BBFAF00365194 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADAA27B2231BBFAF00365194 /* SceneDelegate.swift */; }; ADAA27B5231BBFAF00365194 /* WeatherViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADAA27B4231BBFAF00365194 /* WeatherViewController.swift */; }; ADAA27B8231BBFAF00365194 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = ADAA27B6231BBFAF00365194 /* Main.storyboard */; }; ADAA27BA231BBFB300365194 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = ADAA27B9231BBFB300365194 /* Assets.xcassets */; }; ADAA27BD231BBFB300365194 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = ADAA27BB231BBFB300365194 /* LaunchScreen.storyboard */; }; - ADAA27C6231BC02C00365194 /* light_background.pdf in Resources */ = {isa = PBXBuildFile; fileRef = ADAA27C4231BC02B00365194 /* light_background.pdf */; }; - ADAA27C7231BC02C00365194 /* dark_background.pdf in Resources */ = {isa = PBXBuildFile; fileRef = ADAA27C5231BC02B00365194 /* dark_background.pdf */; }; ADAA27CE231BC87F00365194 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = ADAA27CD231BC87F00365194 /* README.md */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 1260ECE729E18F9F002569CF /* WeatherManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WeatherManager.swift; path = Clima/Model/WeatherManager.swift; sourceTree = SOURCE_ROOT; }; + 126AAEC829E889E900173620 /* WeatherData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WeatherData.swift; sourceTree = ""; }; + 126AAECA29E9D38400173620 /* WeatherModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WeatherModel.swift; sourceTree = ""; }; + 12BB5E152A213A810093C6C1 /* Clima.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Clima.entitlements; sourceTree = ""; }; + 12BE3F1B2A4F3D7D0078E526 /* Keys.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Keys.plist; sourceTree = ""; }; ADAA27AD231BBFAF00365194 /* Clima.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Clima.app; sourceTree = BUILT_PRODUCTS_DIR; }; ADAA27B0231BBFAF00365194 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; ADAA27B2231BBFAF00365194 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -27,8 +34,6 @@ ADAA27B9231BBFB300365194 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; ADAA27BC231BBFB300365194 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; ADAA27BE231BBFB300365194 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - ADAA27C4231BC02B00365194 /* light_background.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = light_background.pdf; sourceTree = ""; }; - ADAA27C5231BC02B00365194 /* dark_background.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = dark_background.pdf; sourceTree = ""; }; ADAA27CD231BC87F00365194 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; /* End PBXFileReference section */ @@ -43,6 +48,16 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 126AAEC729E18FF900173620 /* Model */ = { + isa = PBXGroup; + children = ( + 1260ECE729E18F9F002569CF /* WeatherManager.swift */, + 126AAEC829E889E900173620 /* WeatherData.swift */, + 126AAECA29E9D38400173620 /* WeatherModel.swift */, + ); + path = Model; + sourceTree = ""; + }; ADAA27A4231BBFAF00365194 = { isa = PBXGroup; children = ( @@ -63,16 +78,16 @@ ADAA27AF231BBFAF00365194 /* Clima */ = { isa = PBXGroup; children = ( + 12BB5E152A213A810093C6C1 /* Clima.entitlements */, ADAA27B0231BBFAF00365194 /* AppDelegate.swift */, ADAA27B2231BBFAF00365194 /* SceneDelegate.swift */, - ADAA27CA231BC3FA00365194 /* Model */, + 126AAEC729E18FF900173620 /* Model */, ADAA27C9231BC3F200365194 /* View */, ADAA27C8231BC3E500365194 /* Controller */, ADAA27B9231BBFB300365194 /* Assets.xcassets */, ADAA27BB231BBFB300365194 /* LaunchScreen.storyboard */, ADAA27BE231BBFB300365194 /* Info.plist */, - ADAA27C5231BC02B00365194 /* dark_background.pdf */, - ADAA27C4231BC02B00365194 /* light_background.pdf */, + 12BE3F1B2A4F3D7D0078E526 /* Keys.plist */, ); path = Clima; sourceTree = ""; @@ -93,13 +108,6 @@ path = View; sourceTree = ""; }; - ADAA27CA231BC3FA00365194 /* Model */ = { - isa = PBXGroup; - children = ( - ); - path = Model; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -126,8 +134,9 @@ ADAA27A5231BBFAF00365194 /* Project object */ = { isa = PBXProject; attributes = { + BuildIndependentTargetsInParallel = YES; LastSwiftUpdateCheck = 1100; - LastUpgradeCheck = 1100; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = "App Brewery"; TargetAttributes = { ADAA27AC231BBFAF00365194 = { @@ -159,11 +168,10 @@ buildActionMask = 2147483647; files = ( ADAA27CE231BC87F00365194 /* README.md in Resources */, - ADAA27C7231BC02C00365194 /* dark_background.pdf in Resources */, ADAA27BD231BBFB300365194 /* LaunchScreen.storyboard in Resources */, ADAA27BA231BBFB300365194 /* Assets.xcassets in Resources */, ADAA27B8231BBFAF00365194 /* Main.storyboard in Resources */, - ADAA27C6231BC02C00365194 /* light_background.pdf in Resources */, + 12BE3F1C2A4F3D7D0078E526 /* Keys.plist in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -175,7 +183,10 @@ buildActionMask = 2147483647; files = ( ADAA27B5231BBFAF00365194 /* WeatherViewController.swift in Sources */, + 126AAEC929E889E900173620 /* WeatherData.swift in Sources */, ADAA27B1231BBFAF00365194 /* AppDelegate.swift in Sources */, + 1260ECE829E18F9F002569CF /* WeatherManager.swift in Sources */, + 126AAECB29E9D38400173620 /* WeatherModel.swift in Sources */, ADAA27B3231BBFAF00365194 /* SceneDelegate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -228,6 +239,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -288,6 +300,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -320,14 +333,22 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = Clima/Clima.entitlements; CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 5422CL2MVH; INFOPLIST_FILE = Clima/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Clima; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = co.appbrewery.Clima; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = seoanemartin.ramon.Clima; PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -337,14 +358,22 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = Clima/Clima.entitlements; CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 5422CL2MVH; INFOPLIST_FILE = Clima/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Clima; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = co.appbrewery.Clima; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = seoanemartin.ramon.Clima; PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; diff --git a/Clima/AppDelegate.swift b/Clima/AppDelegate.swift index b618e6ac..0436002b 100644 --- a/Clima/AppDelegate.swift +++ b/Clima/AppDelegate.swift @@ -11,11 +11,15 @@ import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { - + var keys: NSDictionary? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - // Override point for customization after application launch. - return true + // Override point for customization after application launch. + if let path = Bundle.main.path(forResource: "Keys", ofType: "plist") { + keys = NSDictionary(contentsOfFile: path) + } + + return true } // MARK: UISceneSession Lifecycle diff --git a/Clima/Assets.xcassets/Contents.json b/Clima/Assets.xcassets/Contents.json index da4a164c..73c00596 100644 --- a/Clima/Assets.xcassets/Contents.json +++ b/Clima/Assets.xcassets/Contents.json @@ -1,6 +1,6 @@ { "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} diff --git a/Clima/Assets.xcassets/background.imageset/Contents.json b/Clima/Assets.xcassets/background.imageset/Contents.json index 790c09f1..d89173a8 100644 --- a/Clima/Assets.xcassets/background.imageset/Contents.json +++ b/Clima/Assets.xcassets/background.imageset/Contents.json @@ -1,21 +1,35 @@ { "images" : [ { - "idiom" : "universal", - "filename" : "background.png", - "scale" : "1x" + "filename" : "light_background.pdf", + "idiom" : "universal" }, { - "idiom" : "universal", - "scale" : "2x" + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "light" + } + ], + "filename" : "light_background 1.pdf", + "idiom" : "universal" }, { - "idiom" : "universal", - "scale" : "3x" + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "dark_background.pdf", + "idiom" : "universal" } ], "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true } -} \ No newline at end of file +} diff --git a/Clima/Assets.xcassets/background.imageset/background.png b/Clima/Assets.xcassets/background.imageset/background.png deleted file mode 100644 index 22e31fdb0fd6a428817fbbc6010d2038bf30961a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102322 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%0D+^@L}=ljVs4T_ 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 literal 0 HcmV?d00001 diff --git a/Clima/Assets.xcassets/weatherColor.colorset/Contents.json b/Clima/Assets.xcassets/weatherColor.colorset/Contents.json new file mode 100644 index 00000000..30a9c934 --- /dev/null +++ b/Clima/Assets.xcassets/weatherColor.colorset/Contents.json @@ -0,0 +1,56 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.281", + "green" : "0.262", + "red" : "0.105" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "light" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.281", + "green" : "0.262", + "red" : "0.105" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "1.000", + "red" : "1.000" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Clima/Clima.entitlements b/Clima/Clima.entitlements new file mode 100644 index 00000000..fc07546c --- /dev/null +++ b/Clima/Clima.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.network.client + + com.apple.security.personal-information.location + + + diff --git a/Clima/Controller/WeatherViewController.swift b/Clima/Controller/WeatherViewController.swift index 038c2bba..07c30c5c 100644 --- a/Clima/Controller/WeatherViewController.swift +++ b/Clima/Controller/WeatherViewController.swift @@ -7,18 +7,132 @@ // import UIKit +import CoreLocation class WeatherViewController: UIViewController { + + //MARK: - Outlets + @IBOutlet weak var conditionImageView: UIImageView! @IBOutlet weak var temperatureLabel: UILabel! @IBOutlet weak var cityLabel: UILabel! - - override func viewDidLoad() { + @IBOutlet weak var searchTextField: UITextField! + + //MARK: - Vars + + var weatherManager = WeatherManager() + let locationManager = CLLocationManager() + let appDelegate = UIApplication.shared.delegate as! AppDelegate + + override func viewDidLoad() { super.viewDidLoad() - // Do any additional setup after loading the view. + + // Set the VC as delegate of the WeatherManager !!! + weatherManager.delegate = self + searchTextField.delegate = self + locationManager.delegate = self + + // Set the API Key to the WeatherManager + let keys = appDelegate.keys! + weatherManager.apiKey = keys["apiKey"] as! String + + locationManager.requestWhenInUseAuthorization() + locationManager.requestLocation() + + setupUI() } + + //MARK: - Private functions + + private func setupUI() { + // set up the user inteface + } + + @IBAction func locationButtonPressed(_ sender: UIButton) { + locationManager.requestLocation() + } + +} + + +//MARK: - UITextFieldDelegate +extension WeatherViewController: UITextFieldDelegate { + + @IBAction func searchPressed(_ sender: UIButton) { + print(searchTextField.text ?? "\n\n") + searchTextField.endEditing(true) + } + + func textFieldShouldReturn(_ textField: UITextField) -> Bool { + print(searchTextField.text ?? "\n\n") + searchTextField.endEditing(true) + return true + } + + func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { + if textField.text != "" { + return true + } else { + textField.placeholder = "Type something here" + return false + } + } + + func textFieldDidEndEditing(_ textField: UITextField) { + + // Use the searchTextField.text to get the weather for that city. + if let city = searchTextField.text { + + weatherManager.fetchWeather(cityName: city) + } + + searchTextField.text = "" + } + +} +//MARK: - WeatherManagerDelegate +extension WeatherViewController: WeatherManagerDelegate { + + func didUpdateWeather(_ weatherManager: WeatherManager, weather: WeatherModel) { + print(weather.temperature) + DispatchQueue.main.async { + self.temperatureLabel.text = weather.temperatureString + self.conditionImageView.image = UIImage(systemName: weather.conditionName) + self.cityLabel.text = weather.cityName + " - \(weather.description)" + } + } + + func didFailWithError(error: Error) { + + // Any error handling required + print(error) + } } + +//MARK: - CLLocationManagerDelegate +extension WeatherViewController: CLLocationManagerDelegate { + + func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { + + if let location = locations.last { + // Dejamos de pillar ubicación para que no esté en segundo plano en bucle + locationManager.stopUpdatingLocation() + + let lat = location.coordinate.latitude + let lon = location.coordinate.longitude + + print("location:: \(location.description)") + + weatherManager.fetchWeather(latitude: lat, longitude: lon) + } + } + + func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { + + print(error) + } +} diff --git a/Clima/Info.plist b/Clima/Info.plist index b5f9c079..f8d5ed54 100644 --- a/Clima/Info.plist +++ b/Clima/Info.plist @@ -2,6 +2,8 @@ + NSLocationWhenInUseUsageDescription + We need your location to get the current weather for where you are. CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleExecutable diff --git a/Clima/Model/WeatherData.swift b/Clima/Model/WeatherData.swift new file mode 100644 index 00000000..8830c338 --- /dev/null +++ b/Clima/Model/WeatherData.swift @@ -0,0 +1,25 @@ +// +// WeatherData.swift +// Clima +// +// Created by Ramon Seoane Martin on 13/4/23. +// Copyright © 2023 App Brewery. All rights reserved. +// + +import Foundation + +struct WeatherData: Decodable { + let name: String + let main: Main + let weather: [Weather] +} + + +struct Main: Decodable { + let temp: Double +} + +struct Weather: Decodable { + let id: Int + let description: String +} diff --git a/Clima/Model/WeatherManager.swift b/Clima/Model/WeatherManager.swift new file mode 100644 index 00000000..c8642bd5 --- /dev/null +++ b/Clima/Model/WeatherManager.swift @@ -0,0 +1,89 @@ +// +// WeatherManager.swift +// Clima +// +// Created by Ramon Seoane Martin on 8/4/23. +// Copyright © 2023 App Brewery. All rights reserved. +// + +import Foundation +import CoreLocation + +protocol WeatherManagerDelegate { + func didUpdateWeather(_ weatherManager: WeatherManager, weather: WeatherModel) + func didFailWithError(error: Error) +} + +struct WeatherManager { + + var apiKey = "" // We'll retrieve it from a Keys.plist storign our API Key + + let weatherURL = "https://api.openweathermap.org/data/2.5/weather?lang=es&units=metric" + + var delegate: WeatherManagerDelegate? + + func fetchWeather(cityName: String) { + let urlString = "\(weatherURL)&q=\(cityName)&appid=\(apiKey)" + + print(urlString) + performRequest(with: urlString) + } + + func fetchWeather(latitude: CLLocationDegrees, longitude: CLLocationDegrees) { + let urlString = "\(weatherURL)&lat=\(latitude)&lon=\(longitude)" + + print(urlString) + performRequest(with: urlString) + } + + + func performRequest(with urlString: String) { + // 1. Create a URL + if let url = URL(string: urlString) { + + // 2. Create a URLSession + let session = URLSession(configuration: .default) + + // 3. Give the session a task + let task = session.dataTask(with: url) { (data, response, error) in + if error != nil { + delegate?.didFailWithError(error: error!) + return + } + + if let safeData = data { + if let weather = parseJSON(safeData) { + delegate?.didUpdateWeather(self, weather: weather) + } + } + } + // 4. Start the task + task.resume() + } + } + + func parseJSON(_ weatherData: Data) -> WeatherModel? { + let decoder = JSONDecoder() + do{ + let decodedData = try decoder.decode(WeatherData.self, from: weatherData) + + let id = decodedData.weather[0].id + let temp = decodedData.main.temp + let name = decodedData.name + let description = decodedData.weather[0].description + + let weather = WeatherModel(conditionId: id, cityName: name, temperature: temp, description: description) + +// print(weather.conditionName) +// print(weather.temperatureString) + return weather + + } catch { + delegate?.didFailWithError(error: error) + return nil + } + } + + + +} diff --git a/Clima/Model/WeatherModel.swift b/Clima/Model/WeatherModel.swift new file mode 100644 index 00000000..b4c87385 --- /dev/null +++ b/Clima/Model/WeatherModel.swift @@ -0,0 +1,42 @@ +// +// WeatherModel.swift +// Clima +// +// Created by Ramon Seoane Martin on 14/4/23. +// Copyright © 2023 App Brewery. All rights reserved. +// + +import Foundation + +struct WeatherModel { + + let conditionId: Int + let cityName: String + let temperature: Double + let description: String + + var temperatureString: String { + return String(format: "%.1f", temperature) + } + + var conditionName: String { + switch conditionId { + case 200...232: + return "cloud.bolt" + case 300...321: + return "cloud.drizzle" + case 500...531: + return "cloud.rain" + case 600...622: + return "cloud.snow" + case 701...781: + return "cloud.fog" + case 800: + return "sun.max" + case 801...804: + return "cloud" + default: + return "cloud" + } + } +} diff --git a/Clima/View/Base.lproj/Main.storyboard b/Clima/View/Base.lproj/Main.storyboard index fec3bb4e..b6f072d4 100644 --- a/Clima/View/Base.lproj/Main.storyboard +++ b/Clima/View/Base.lproj/Main.storyboard @@ -1,9 +1,12 @@ - + - + + + + @@ -19,47 +22,53 @@ - + - - + - + - + - - - - + + + - + - @@ -93,7 +102,8 @@ - + + @@ -104,11 +114,11 @@ - + @@ -118,9 +128,21 @@ - - - - + + + + + + + + + + + + + + + + From f26db49ecfb61c2de16812c137d1acf4077d1dd3 Mon Sep 17 00:00:00 2001 From: Ramon Seoane Date: Fri, 30 Jun 2023 20:27:27 +0200 Subject: [PATCH 2/2] Archivos eliminados del .gitignore --- .../xcschemes/xcschememanagement.plist | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 Clima.xcodeproj/xcuserdata/angelayu.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/Clima.xcodeproj/xcuserdata/angelayu.xcuserdatad/xcschemes/xcschememanagement.plist b/Clima.xcodeproj/xcuserdata/angelayu.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index ab521101..00000000 --- a/Clima.xcodeproj/xcuserdata/angelayu.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,14 +0,0 @@ - - - - - SchemeUserState - - Clima.xcscheme_^#shared#^_ - - orderHint - 0 - - - -