Commit 8a946120 by Dmitriy Stepanets

Finished app modularization

parent 1943a4ce
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<key>OneWeatherNotificationServiceExtension.xcscheme_^#shared#^_</key> <key>OneWeatherNotificationServiceExtension.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>45</integer> <integer>44</integer>
</dict> </dict>
<key>PG (Playground) 1.xcscheme</key> <key>PG (Playground) 1.xcscheme</key>
<dict> <dict>
......
...@@ -2,6 +2,18 @@ ...@@ -2,6 +2,18 @@
<Workspace <Workspace
version = "1.0"> version = "1.0">
<FileRef <FileRef
location = "group:DelayedSaveStorage/DelayedSaveStorage.xcodeproj">
</FileRef>
<FileRef
location = "group:CoreDataStorage/CoreDataStorage.xcodeproj">
</FileRef>
<FileRef
location = "group:/Users/dstepanets/Documents/Development/1Weather/BlendFIPS/BlendFIPSSource.xcodeproj">
</FileRef>
<FileRef
location = "group:BlendHealthSource/BlendHealthSource.xcodeproj">
</FileRef>
<FileRef
location = "group:WDTWeatherSource/WDTWeatherSource.xcodeproj"> location = "group:WDTWeatherSource/WDTWeatherSource.xcodeproj">
</FileRef> </FileRef>
<FileRef <FileRef
......
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
<key>isShown</key> <key>isShown</key>
<false/> <false/>
<key>orderHint</key> <key>orderHint</key>
<integer>2</integer> <integer>48</integer>
</dict> </dict>
</dict> </dict>
</dict> </dict>
......
...@@ -8,5 +8,5 @@ ...@@ -8,5 +8,5 @@
import Foundation import Foundation
public func analytics(log event: AnalyticsEvent, params: [AnalyticsParameter: Any]? = nil) { public func analytics(log event: AnalyticsEvent, params: [AnalyticsParameter: Any]? = nil) {
Analytics.shared.log(event: event, params: params) AppAnalytics.shared.log(event: event, params: params)
} }
// //
// Analytics.swift // AppAnalytics.swift
// 1Weather // 1Weather
// //
// Created by Demid Merzlyakov on 16.03.2021. // Created by Demid Merzlyakov on 16.03.2021.
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
import Foundation import Foundation
import OneWeatherCore import OneWeatherCore
public class Analytics { public class AppAnalytics {
private let services: [AnalyticsService] private let services: [AnalyticsService]
private let log = Logger(componentName: "⬜ Analytics") private let log = Logger(componentName: "⬜ Analytics")
...@@ -16,7 +16,7 @@ public class Analytics { ...@@ -16,7 +16,7 @@ public class Analytics {
self.services = services self.services = services
} }
public static let shared = Analytics(services: [FlurryAnalyticsService(), MoEngageAnalyticsService()]) public static let shared = AppAnalytics(services: [FlurryAnalyticsService(), MoEngageAnalyticsService()])
public func log(event: AnalyticsEvent, params: [AnalyticsParameter: Any]? = nil) { public func log(event: AnalyticsEvent, params: [AnalyticsParameter: Any]? = nil) {
var loggedTo = [String]() var loggedTo = [String]()
......
...@@ -11,6 +11,10 @@ import UIKit ...@@ -11,6 +11,10 @@ import UIKit
import MoEngage import MoEngage
import OneWeatherCore import OneWeatherCore
import WDTWeatherSource import WDTWeatherSource
import BlendHealthSource
import BlendFIPS
import CoreDataStorage
import DelayedSaveStorage
public protocol LocationManagerDelegate: AnyObject { public protocol LocationManagerDelegate: AnyObject {
func locationManager(_ locationManager: LocationManager, changedSelectedLocation newLocation: Location?) func locationManager(_ locationManager: LocationManager, changedSelectedLocation newLocation: Location?)
......
...@@ -10,6 +10,7 @@ import StoreKit ...@@ -10,6 +10,7 @@ import StoreKit
import MessageUI import MessageUI
import PKHUD import PKHUD
import OneWeatherCore import OneWeatherCore
import BlendHealthSource
protocol MenuViewModelDelegate: ViewModelDelegate { protocol MenuViewModelDelegate: ViewModelDelegate {
func viewControllerForPresentation() -> UIViewController func viewControllerForPresentation() -> UIViewController
......
//
// BlendFIPS.h
// BlendFIPS
//
// Created by Dmitry Stepanets on 21.05.2021.
//
#import <Foundation/Foundation.h>
//! Project version number for BlendFIPS.
FOUNDATION_EXPORT double BlendFIPSVersionNumber;
//! Project version string for BlendFIPS.
FOUNDATION_EXPORT const unsigned char BlendFIPSVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <BlendFIPS/PublicHeader.h>
...@@ -4,11 +4,10 @@ ...@@ -4,11 +4,10 @@
// //
// Created by Demid Merzlyakov on 28.04.2021. // Created by Demid Merzlyakov on 28.04.2021.
// //
import Foundation import Foundation
import OneWeatherCore import OneWeatherCore
class BlendFIPSSource: FIPSSource { public class BlendFIPSSource: FIPSSource {
private let log = Logger(componentName: "BlendFIPSSource") private let log = Logger(componentName: "BlendFIPSSource")
private let baseUrlProduction = "https://nwsalert.onelouder.com" private let baseUrlProduction = "https://nwsalert.onelouder.com"
...@@ -35,6 +34,8 @@ class BlendFIPSSource: FIPSSource { ...@@ -35,6 +34,8 @@ class BlendFIPSSource: FIPSSource {
private var locationsBeingUpdated = Set<Location>() private var locationsBeingUpdated = Set<Location>()
public init() {}
public func getFipsCode(for location: Location, completion: @escaping FIPSSourceeCompletion) { public func getFipsCode(for location: Location, completion: @escaping FIPSSourceeCompletion) {
internalQueue.addOperation { [weak self] in internalQueue.addOperation { [weak self] in
let extendedCompletion: FIPSSourceeCompletion = { [weak self] (fipsCode) in let extendedCompletion: FIPSSourceeCompletion = { [weak self] (fipsCode) in
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
</dict>
</plist>
//
// BlendFIPSTests.swift
// BlendFIPSTests
//
// Created by Dmitry Stepanets on 21.05.2021.
//
import XCTest
@testable import BlendFIPS
class BlendFIPSTests: XCTestCase {
override func setUpWithError() throws {
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDownWithError() throws {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
func testExample() throws {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
}
func testPerformanceExample() throws {
// This is an example of a performance test case.
self.measure {
// Put the code you want to measure the time of here.
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>
//
// BlendHealthSource.h
// BlendHealthSource
//
// Created by Dmitry Stepanets on 21.05.2021.
//
#import <Foundation/Foundation.h>
//! Project version number for BlendHealthSource.
FOUNDATION_EXPORT double BlendHealthSourceVersionNumber;
//! Project version string for BlendHealthSource.
FOUNDATION_EXPORT const unsigned char BlendHealthSourceVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <BlendHealthSource/PublicHeader.h>
...@@ -43,6 +43,8 @@ public class BlendHealthSource: HealthSource { ...@@ -43,6 +43,8 @@ public class BlendHealthSource: HealthSource {
private var locationsBeingUpdated = Set<Location>() private var locationsBeingUpdated = Set<Location>()
public init() {}
public func updateHelath(for location: Location, completion: @escaping HealthSourceCompletion) { public func updateHelath(for location: Location, completion: @escaping HealthSourceCompletion) {
internalQueue.addOperation { [weak self] in internalQueue.addOperation { [weak self] in
let extendedCompletion: HealthSourceCompletion = { [weak self] (health, error) in let extendedCompletion: HealthSourceCompletion = { [weak self] (health, error) in
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
</dict>
</plist>
//
// BlendHealthSourceTests.swift
// BlendHealthSourceTests
//
// Created by Dmitry Stepanets on 21.05.2021.
//
import XCTest
@testable import BlendHealthSource
class BlendHealthSourceTests: XCTestCase {
override func setUpWithError() throws {
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDownWithError() throws {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
func testExample() throws {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
}
func testPerformanceExample() throws {
// This is an example of a performance test case.
self.measure {
// Put the code you want to measure the time of here.
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>
//
// CoreDataStorage.h
// CoreDataStorage
//
// Created by Dmitry Stepanets on 21.05.2021.
//
#import <Foundation/Foundation.h>
//! Project version number for CoreDataStorage.
FOUNDATION_EXPORT double CoreDataStorageVersionNumber;
//! Project version string for CoreDataStorage.
FOUNDATION_EXPORT const unsigned char CoreDataStorageVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <CoreDataStorage/PublicHeader.h>
...@@ -25,6 +25,8 @@ public class CoreDataStorage: Storage { ...@@ -25,6 +25,8 @@ public class CoreDataStorage: Storage {
return container return container
}() }()
public init() {}
public func save(locations: [Location], selectedIndex: Int?) { public func save(locations: [Location], selectedIndex: Int?) {
log.info("Save: start") log.info("Save: start")
managedContext?.perform { [weak self] in managedContext?.perform { [weak self] in
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
</dict>
</plist>
//
// CoreDataStorageTests.swift
// CoreDataStorageTests
//
// Created by Dmitry Stepanets on 21.05.2021.
//
import XCTest
@testable import CoreDataStorage
class CoreDataStorageTests: XCTestCase {
override func setUpWithError() throws {
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDownWithError() throws {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
func testExample() throws {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
}
func testPerformanceExample() throws {
// This is an example of a performance test case.
self.measure {
// Put the code you want to measure the time of here.
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>
//
// DelayedSaveStorage.h
// DelayedSaveStorage
//
// Created by Dmitry Stepanets on 21.05.2021.
//
#import <Foundation/Foundation.h>
//! Project version number for DelayedSaveStorage.
FOUNDATION_EXPORT double DelayedSaveStorageVersionNumber;
//! Project version string for DelayedSaveStorage.
FOUNDATION_EXPORT const unsigned char DelayedSaveStorageVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <DelayedSaveStorage/PublicHeader.h>
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
// //
import Foundation import Foundation
import OneWeatherCore
/// A decorator Storage that adds delay before saving to the nested storage. /// A decorator Storage that adds delay before saving to the nested storage.
public class DelayedSaveStorage: Storage { public class DelayedSaveStorage: Storage {
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
</dict>
</plist>
//
// DelayedSaveStorageTests.swift
// DelayedSaveStorageTests
//
// Created by Dmitry Stepanets on 21.05.2021.
//
import XCTest
@testable import DelayedSaveStorage
class DelayedSaveStorageTests: XCTestCase {
override func setUpWithError() throws {
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDownWithError() throws {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
func testExample() throws {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
}
func testPerformanceExample() throws {
// This is an example of a performance test case.
self.measure {
// Put the code you want to measure the time of here.
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>
...@@ -14,6 +14,8 @@ ...@@ -14,6 +14,8 @@
CD2D55DD2655377F007B70F4 /* NWSAlertExtendedInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD2D55DB2655377F007B70F4 /* NWSAlertExtendedInfo.swift */; }; CD2D55DD2655377F007B70F4 /* NWSAlertExtendedInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD2D55DB2655377F007B70F4 /* NWSAlertExtendedInfo.swift */; };
CD2D55DE2655377F007B70F4 /* NWSSeverityLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD2D55DC2655377F007B70F4 /* NWSSeverityLevel.swift */; }; CD2D55DE2655377F007B70F4 /* NWSSeverityLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD2D55DC2655377F007B70F4 /* NWSSeverityLevel.swift */; };
CD2D55E0265537DC007B70F4 /* NWSAlertInfoBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD2D55DF265537DC007B70F4 /* NWSAlertInfoBlock.swift */; }; CD2D55E0265537DC007B70F4 /* NWSAlertInfoBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD2D55DF265537DC007B70F4 /* NWSAlertInfoBlock.swift */; };
CD3883972657AFE00070FD6F /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD615FCD265529DE00B717DB /* Settings.swift */; };
CD3883EC2657B83D0070FD6F /* FIPSResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD3883EB2657B83D0070FD6F /* FIPSResponse.swift */; };
CD550FBA265531A100257FB5 /* RadarLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD550FB52655318D00257FB5 /* RadarLayer.swift */; }; CD550FBA265531A100257FB5 /* RadarLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD550FB52655318D00257FB5 /* RadarLayer.swift */; };
CD550FBB265531A100257FB5 /* RadarLayerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD550FB62655318D00257FB5 /* RadarLayerType.swift */; }; CD550FBB265531A100257FB5 /* RadarLayerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD550FB62655318D00257FB5 /* RadarLayerType.swift */; };
CD550FBC265531A100257FB5 /* WeatherLayerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD550FB72655318D00257FB5 /* WeatherLayerType.swift */; }; CD550FBC265531A100257FB5 /* WeatherLayerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD550FB72655318D00257FB5 /* WeatherLayerType.swift */; };
...@@ -54,7 +56,6 @@ ...@@ -54,7 +56,6 @@
CD615FC72655295C00B717DB /* UITabBarController+Hide.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD615FB42655293100B717DB /* UITabBarController+Hide.swift */; }; CD615FC72655295C00B717DB /* UITabBarController+Hide.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD615FB42655293100B717DB /* UITabBarController+Hide.swift */; };
CD615FC82655295C00B717DB /* CACornerMask+All.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD615FB52655293100B717DB /* CACornerMask+All.swift */; }; CD615FC82655295C00B717DB /* CACornerMask+All.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD615FB52655293100B717DB /* CACornerMask+All.swift */; };
CD615FC92655295C00B717DB /* UIDevice+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD615FB62655293100B717DB /* UIDevice+Convenience.swift */; }; CD615FC92655295C00B717DB /* UIDevice+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD615FB62655293100B717DB /* UIDevice+Convenience.swift */; };
CD91685426552F7500EC04EF /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD615FCD265529DE00B717DB /* Settings.swift */; };
CD91685726552FAE00EC04EF /* MulticastDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD91685626552FAE00EC04EF /* MulticastDelegate.swift */; }; CD91685726552FAE00EC04EF /* MulticastDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD91685626552FAE00EC04EF /* MulticastDelegate.swift */; };
CD91685826552FD000EC04EF /* DefaultSettingsFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD615FCE265529DE00B717DB /* DefaultSettingsFactory.swift */; }; CD91685826552FD000EC04EF /* DefaultSettingsFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD615FCE265529DE00B717DB /* DefaultSettingsFactory.swift */; };
CD91685926552FD000EC04EF /* DefaultSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD615FCF265529DE00B717DB /* DefaultSettings.swift */; }; CD91685926552FD000EC04EF /* DefaultSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD615FCF265529DE00B717DB /* DefaultSettings.swift */; };
...@@ -64,7 +65,6 @@ ...@@ -64,7 +65,6 @@
CD91685F26552FEC00EC04EF /* Global.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD91685D26552FEC00EC04EF /* Global.swift */; }; CD91685F26552FEC00EC04EF /* Global.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD91685D26552FEC00EC04EF /* Global.swift */; };
CDBC243F2656740E00F9F4E2 /* AppData.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDBC243E2656740E00F9F4E2 /* AppData.swift */; }; CDBC243F2656740E00F9F4E2 /* AppData.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDBC243E2656740E00F9F4E2 /* AppData.swift */; };
CDFE458D26566BD50021A29F /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFE458C26566BD50021A29F /* Storage.swift */; }; CDFE458D26566BD50021A29F /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFE458C26566BD50021A29F /* Storage.swift */; };
CDFE458F26566C5F0021A29F /* DelayedSaveStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFE458E26566C5E0021A29F /* DelayedSaveStorage.swift */; };
CDFE459426566D7B0021A29F /* HealthSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFE459326566D7B0021A29F /* HealthSource.swift */; }; CDFE459426566D7B0021A29F /* HealthSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFE459326566D7B0021A29F /* HealthSource.swift */; };
CDFE459626566D860021A29F /* FIPSSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFE459526566D860021A29F /* FIPSSource.swift */; }; CDFE459626566D860021A29F /* FIPSSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFE459526566D860021A29F /* FIPSSource.swift */; };
CFF31454D7A391AB1E363560 /* Pods_OneWeatherCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F6ED82DCC42318CBA9646976 /* Pods_OneWeatherCore.framework */; }; CFF31454D7A391AB1E363560 /* Pods_OneWeatherCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F6ED82DCC42318CBA9646976 /* Pods_OneWeatherCore.framework */; };
...@@ -90,6 +90,7 @@ ...@@ -90,6 +90,7 @@
CD2D55DB2655377F007B70F4 /* NWSAlertExtendedInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NWSAlertExtendedInfo.swift; sourceTree = "<group>"; }; CD2D55DB2655377F007B70F4 /* NWSAlertExtendedInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NWSAlertExtendedInfo.swift; sourceTree = "<group>"; };
CD2D55DC2655377F007B70F4 /* NWSSeverityLevel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NWSSeverityLevel.swift; sourceTree = "<group>"; }; CD2D55DC2655377F007B70F4 /* NWSSeverityLevel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NWSSeverityLevel.swift; sourceTree = "<group>"; };
CD2D55DF265537DC007B70F4 /* NWSAlertInfoBlock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NWSAlertInfoBlock.swift; sourceTree = "<group>"; }; CD2D55DF265537DC007B70F4 /* NWSAlertInfoBlock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NWSAlertInfoBlock.swift; sourceTree = "<group>"; };
CD3883EB2657B83D0070FD6F /* FIPSResponse.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FIPSResponse.swift; sourceTree = "<group>"; };
CD550FB52655318D00257FB5 /* RadarLayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadarLayer.swift; sourceTree = "<group>"; }; CD550FB52655318D00257FB5 /* RadarLayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadarLayer.swift; sourceTree = "<group>"; };
CD550FB62655318D00257FB5 /* RadarLayerType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadarLayerType.swift; sourceTree = "<group>"; }; CD550FB62655318D00257FB5 /* RadarLayerType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadarLayerType.swift; sourceTree = "<group>"; };
CD550FB72655318D00257FB5 /* WeatherLayerType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WeatherLayerType.swift; sourceTree = "<group>"; }; CD550FB72655318D00257FB5 /* WeatherLayerType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WeatherLayerType.swift; sourceTree = "<group>"; };
...@@ -143,7 +144,6 @@ ...@@ -143,7 +144,6 @@
CD91685D26552FEC00EC04EF /* Global.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Global.swift; sourceTree = "<group>"; }; CD91685D26552FEC00EC04EF /* Global.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Global.swift; sourceTree = "<group>"; };
CDBC243E2656740E00F9F4E2 /* AppData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppData.swift; sourceTree = "<group>"; }; CDBC243E2656740E00F9F4E2 /* AppData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppData.swift; sourceTree = "<group>"; };
CDFE458C26566BD50021A29F /* Storage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Storage.swift; sourceTree = "<group>"; }; CDFE458C26566BD50021A29F /* Storage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Storage.swift; sourceTree = "<group>"; };
CDFE458E26566C5E0021A29F /* DelayedSaveStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DelayedSaveStorage.swift; sourceTree = "<group>"; };
CDFE459326566D7B0021A29F /* HealthSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HealthSource.swift; sourceTree = "<group>"; }; CDFE459326566D7B0021A29F /* HealthSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HealthSource.swift; sourceTree = "<group>"; };
CDFE459526566D860021A29F /* FIPSSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FIPSSource.swift; sourceTree = "<group>"; }; CDFE459526566D860021A29F /* FIPSSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FIPSSource.swift; sourceTree = "<group>"; };
F6ED82DCC42318CBA9646976 /* Pods_OneWeatherCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_OneWeatherCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; F6ED82DCC42318CBA9646976 /* Pods_OneWeatherCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_OneWeatherCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
...@@ -188,6 +188,14 @@ ...@@ -188,6 +188,14 @@
path = PropertyWrappers; path = PropertyWrappers;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
CD3883EA2657B82A0070FD6F /* FIPS */ = {
isa = PBXGroup;
children = (
CD3883EB2657B83D0070FD6F /* FIPSResponse.swift */,
);
path = FIPS;
sourceTree = "<group>";
};
CD550FB92655318D00257FB5 /* RadarLayers */ = { CD550FB92655318D00257FB5 /* RadarLayers */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
...@@ -299,6 +307,7 @@ ...@@ -299,6 +307,7 @@
CD615F8C2655269200B717DB /* Weather */, CD615F8C2655269200B717DB /* Weather */,
CD615F912655269200B717DB /* Health */, CD615F912655269200B717DB /* Health */,
CD615F932655269200B717DB /* Notifications */, CD615F932655269200B717DB /* Notifications */,
CD3883EA2657B82A0070FD6F /* FIPS */,
); );
path = ModelObjects; path = ModelObjects;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -363,7 +372,6 @@ ...@@ -363,7 +372,6 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
CDFE458C26566BD50021A29F /* Storage.swift */, CDFE458C26566BD50021A29F /* Storage.swift */,
CDFE458E26566C5E0021A29F /* DelayedSaveStorage.swift */,
); );
path = Storage; path = Storage;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -520,6 +528,7 @@ ...@@ -520,6 +528,7 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
CD3883972657AFE00070FD6F /* Settings.swift in Sources */,
CD2D55DA26553751007B70F4 /* NWSAlert.swift in Sources */, CD2D55DA26553751007B70F4 /* NWSAlert.swift in Sources */,
CD2D55D526553384007B70F4 /* UserDefaultsOptionalValue.swift in Sources */, CD2D55D526553384007B70F4 /* UserDefaultsOptionalValue.swift in Sources */,
CD2D55D626553384007B70F4 /* UserDefaultsValue.swift in Sources */, CD2D55D626553384007B70F4 /* UserDefaultsValue.swift in Sources */,
...@@ -533,7 +542,6 @@ ...@@ -533,7 +542,6 @@
CD91685926552FD000EC04EF /* DefaultSettings.swift in Sources */, CD91685926552FD000EC04EF /* DefaultSettings.swift in Sources */,
CD91685A26552FD000EC04EF /* DefaultSettingsImperial.swift in Sources */, CD91685A26552FD000EC04EF /* DefaultSettingsImperial.swift in Sources */,
CD91685B26552FD000EC04EF /* DefaultSettingsMetric.swift in Sources */, CD91685B26552FD000EC04EF /* DefaultSettingsMetric.swift in Sources */,
CD91685426552F7500EC04EF /* Settings.swift in Sources */,
CD615FB82655295C00B717DB /* UIColor+Hex.swift in Sources */, CD615FB82655295C00B717DB /* UIColor+Hex.swift in Sources */,
CD2D55E0265537DC007B70F4 /* NWSAlertInfoBlock.swift in Sources */, CD2D55E0265537DC007B70F4 /* NWSAlertInfoBlock.swift in Sources */,
CD91685726552FAE00EC04EF /* MulticastDelegate.swift in Sources */, CD91685726552FAE00EC04EF /* MulticastDelegate.swift in Sources */,
...@@ -560,10 +568,10 @@ ...@@ -560,10 +568,10 @@
CD615FC92655295C00B717DB /* UIDevice+Convenience.swift in Sources */, CD615FC92655295C00B717DB /* UIDevice+Convenience.swift in Sources */,
CD615F95265526E700B717DB /* UpdatableModelObject.swift in Sources */, CD615F95265526E700B717DB /* UpdatableModelObject.swift in Sources */,
CD615FA4265528F000B717DB /* HelperTypes.swift in Sources */, CD615FA4265528F000B717DB /* HelperTypes.swift in Sources */,
CD3883EC2657B83D0070FD6F /* FIPSResponse.swift in Sources */,
CD615F96265526E700B717DB /* UpdatableModelObjectInTime.swift in Sources */, CD615F96265526E700B717DB /* UpdatableModelObjectInTime.swift in Sources */,
CD615F97265526E700B717DB /* PartialLocation.swift in Sources */, CD615F97265526E700B717DB /* PartialLocation.swift in Sources */,
CD615F98265526E700B717DB /* GeoNamesPlace.swift in Sources */, CD615F98265526E700B717DB /* GeoNamesPlace.swift in Sources */,
CDFE458F26566C5F0021A29F /* DelayedSaveStorage.swift in Sources */,
CD615F99265526E700B717DB /* Location.swift in Sources */, CD615F99265526E700B717DB /* Location.swift in Sources */,
CDFE459426566D7B0021A29F /* HealthSource.swift in Sources */, CDFE459426566D7B0021A29F /* HealthSource.swift in Sources */,
CD615F9A265526E700B717DB /* CurrentWeather.swift in Sources */, CD615F9A265526E700B717DB /* CurrentWeather.swift in Sources */,
......
//
// FIPSResponse.swift
// 1Weather
//
// Created by Demid Merzlyakov on 28.04.2021.
//
import Foundation
public struct FIPSResponse: Codable {
public let fipsCode, s2CellID: String
public enum CodingKeys: String, CodingKey {
case fipsCode = "fips_code"
case s2CellID = "s2_cell_id"
}
}
// MARK: Convenience initializers
public extension FIPSResponse {
init?(data: Data) {
guard let me = try? JSONDecoder().decode(FIPSResponse.self, from: data) else { return nil }
self = me
}
init?(_ json: String, using encoding: String.Encoding = .utf8) {
guard let data = json.data(using: encoding) else { return nil }
self.init(data: data)
}
init?(fromURL url: String) {
guard let url = URL(string: url) else { return nil }
guard let data = try? Data(contentsOf: url) else { return nil }
self.init(data: data)
}
var jsonData: Data? {
return try? JSONEncoder().encode(self)
}
var json: String? {
guard let data = self.jsonData else { return nil }
return String(data: data, encoding: .utf8)
}
}
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1250"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0FD5C59E9D63ED6141E243FAD34E420B"
BuildableName = "Firebase-Analytics-Core-CoreOnly-Crashlytics-RemoteConfig"
BlueprintName = "Firebase-Analytics-Core-CoreOnly-Crashlytics-RemoteConfig"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "0FD5C59E9D63ED6141E243FAD34E420B"
BuildableName = "Firebase-Analytics-Core-CoreOnly-Crashlytics-RemoteConfig"
BlueprintName = "Firebase-Analytics-Core-CoreOnly-Crashlytics-RemoteConfig"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1250"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "14AAC5DF58B4AA28AE3C08ED0690A1B5"
BuildableName = "Firebase-CoreOnly-Crashlytics"
BlueprintName = "Firebase-CoreOnly-Crashlytics"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "14AAC5DF58B4AA28AE3C08ED0690A1B5"
BuildableName = "Firebase-CoreOnly-Crashlytics"
BlueprintName = "Firebase-CoreOnly-Crashlytics"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1250"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6EA78CBB4CB5857EA26CC237D890A592"
BuildableName = "Pods_OneWeatherCore.framework"
BlueprintName = "Pods-OneWeatherCore"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6EA78CBB4CB5857EA26CC237D890A592"
BuildableName = "Pods_OneWeatherCore.framework"
BlueprintName = "Pods-OneWeatherCore"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1250"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "9907DD07EA33BC2F8CA775707CC8BD16"
BuildableName = "Pods_WDTWeatherSource.framework"
BlueprintName = "Pods-WDTWeatherSource"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "9907DD07EA33BC2F8CA775707CC8BD16"
BuildableName = "Pods_WDTWeatherSource.framework"
BlueprintName = "Pods-WDTWeatherSource"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment