From 492265bb4dbc9c4dece3204a694b9bac4c859ac2 Mon Sep 17 00:00:00 2001 From: Christie Davis Date: Thu, 18 Jul 2019 10:56:58 +1200 Subject: [PATCH 1/3] Update project settings to remove warnings --- Example/OBD2-Swift.xcodeproj/project.pbxproj | 10 ++++++++-- .../xcschemes/OBD2-Swift-Example.xcscheme | 4 +--- .../xcshareddata/IDEWorkspaceChecks.plist | 8 ++++++++ Example/Pods/Pods.xcodeproj/project.pbxproj | 11 +++++++++-- 4 files changed, 26 insertions(+), 7 deletions(-) create mode 100644 Example/OBD2-Swift.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/Example/OBD2-Swift.xcodeproj/project.pbxproj b/Example/OBD2-Swift.xcodeproj/project.pbxproj index 15179e8..d6d0b7f 100644 --- a/Example/OBD2-Swift.xcodeproj/project.pbxproj +++ b/Example/OBD2-Swift.xcodeproj/project.pbxproj @@ -167,7 +167,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0720; - LastUpgradeCheck = 0910; + LastUpgradeCheck = 1020; ORGANIZATIONNAME = CocoaPods; TargetAttributes = { 607FACCF1AFB9204008FA782 = { @@ -179,7 +179,7 @@ }; buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "OBD2-Swift" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -292,6 +292,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -300,12 +301,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -345,6 +348,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -353,12 +357,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; diff --git a/Example/OBD2-Swift.xcodeproj/xcshareddata/xcschemes/OBD2-Swift-Example.xcscheme b/Example/OBD2-Swift.xcodeproj/xcshareddata/xcschemes/OBD2-Swift-Example.xcscheme index 86189f9..d95bcfe 100644 --- a/Example/OBD2-Swift.xcodeproj/xcshareddata/xcschemes/OBD2-Swift-Example.xcscheme +++ b/Example/OBD2-Swift.xcodeproj/xcshareddata/xcschemes/OBD2-Swift-Example.xcscheme @@ -1,6 +1,6 @@ + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index 9009fca..62edaf3 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -482,7 +482,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0830; - LastUpgradeCheck = 0910; + LastUpgradeCheck = 1020; TargetAttributes = { 5991817A673AD2967E0F774A2AEC5DB1 = { LastSwiftMigration = 0910; @@ -491,10 +491,11 @@ }; buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); mainGroup = 7DB346D0F39D3F0E887471402A8071AB; productRefGroup = 03C011321026B1A0DF2708B9BEF1CFBC /* Products */; @@ -620,6 +621,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -630,6 +632,7 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -637,6 +640,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -676,6 +680,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -686,6 +691,7 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -693,6 +699,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; From 9d387794f39b3bf8b7b4010e58c7883a05c64c28 Mon Sep 17 00:00:00 2001 From: Christie Davis Date: Thu, 18 Jul 2019 10:58:20 +1200 Subject: [PATCH 2/3] Swift 5 project conversion --- Example/OBD2-Swift.xcodeproj/project.pbxproj | 8 +++----- Example/OBD2-Swift/AppDelegate.swift | 2 +- Example/Pods/Pods.xcodeproj/project.pbxproj | 8 +++----- OBD2-Swift/Classes/Observer/SensorObserver.swift | 2 +- OBD2-Swift/Classes/Operations/CommandOperation.swift | 4 ++-- OBD2-Swift/Classes/Operations/InitScanerOperation.swift | 4 ++-- .../Classes/Operations/OpenOBDConnectionOperation.swift | 4 ++-- OBD2-Swift/Classes/Operations/StreamHandleOperation.swift | 8 ++++---- OBD2-Swift/Classes/Scanner/StreamHolder.swift | 4 ++-- 9 files changed, 20 insertions(+), 24 deletions(-) diff --git a/Example/OBD2-Swift.xcodeproj/project.pbxproj b/Example/OBD2-Swift.xcodeproj/project.pbxproj index d6d0b7f..84892f4 100644 --- a/Example/OBD2-Swift.xcodeproj/project.pbxproj +++ b/Example/OBD2-Swift.xcodeproj/project.pbxproj @@ -173,7 +173,7 @@ 607FACCF1AFB9204008FA782 = { CreatedOnToolsVersion = 6.3.1; DevelopmentTeam = J7LBYY3B34; - LastSwiftMigration = 0910; + LastSwiftMigration = 1020; }; }; }; @@ -405,8 +405,7 @@ MODULE_NAME = ExampleApp; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -422,8 +421,7 @@ MODULE_NAME = ExampleApp; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Release; }; diff --git a/Example/OBD2-Swift/AppDelegate.swift b/Example/OBD2-Swift/AppDelegate.swift index 970cdfc..8131d7f 100644 --- a/Example/OBD2-Swift/AppDelegate.swift +++ b/Example/OBD2-Swift/AppDelegate.swift @@ -14,7 +14,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. return true } diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index 62edaf3..5aee12a 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -485,7 +485,7 @@ LastUpgradeCheck = 1020; TargetAttributes = { 5991817A673AD2967E0F774A2AEC5DB1 = { - LastSwiftMigration = 0910; + LastSwiftMigration = 1020; }; }; }; @@ -759,8 +759,7 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -795,8 +794,7 @@ SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; diff --git a/OBD2-Swift/Classes/Observer/SensorObserver.swift b/OBD2-Swift/Classes/Observer/SensorObserver.swift index 225145f..68cff4c 100644 --- a/OBD2-Swift/Classes/Observer/SensorObserver.swift +++ b/OBD2-Swift/Classes/Observer/SensorObserver.swift @@ -23,7 +23,7 @@ public class Observer : ObserverType { public func observe(command : T, block : @escaping (_ descriptor : T.Descriptor?)->()){ let key = command.hashValue let array = observers[key] ?? [] - let flatAray = array.flatMap({$0}) + let flatAray = array.compactMap({$0}) observers[key] = flatAray observers[key]?.append(block) } diff --git a/OBD2-Swift/Classes/Operations/CommandOperation.swift b/OBD2-Swift/Classes/Operations/CommandOperation.swift index d151f8d..f0609ce 100644 --- a/OBD2-Swift/Classes/Operations/CommandOperation.swift +++ b/OBD2-Swift/Classes/Operations/CommandOperation.swift @@ -18,8 +18,8 @@ class CommandOperation: StreamHandleOperation { private(set) var reader: StreamReader private var readCompleted = false { didSet { - self.input.remove(from: .current, forMode: .defaultRunLoopMode) - self.output.remove(from: .current, forMode: .defaultRunLoopMode) + self.input.remove(from: .current, forMode: RunLoop.Mode.default) + self.output.remove(from: .current, forMode: RunLoop.Mode.default) } } diff --git a/OBD2-Swift/Classes/Operations/InitScanerOperation.swift b/OBD2-Swift/Classes/Operations/InitScanerOperation.swift index 2c9531a..83e1c07 100644 --- a/OBD2-Swift/Classes/Operations/InitScanerOperation.swift +++ b/OBD2-Swift/Classes/Operations/InitScanerOperation.swift @@ -56,8 +56,8 @@ class InitScanerOperation: StreamHandleOperation { private var state: Scanner.State = .unknown { didSet{ if state == .complete { - input.remove(from: .current, forMode: .defaultRunLoopMode) - output.remove(from: .current, forMode: .defaultRunLoopMode) + input.remove(from: .current, forMode: RunLoop.Mode.default) + output.remove(from: .current, forMode: RunLoop.Mode.default) } } } diff --git a/OBD2-Swift/Classes/Operations/OpenOBDConnectionOperation.swift b/OBD2-Swift/Classes/Operations/OpenOBDConnectionOperation.swift index 99d21ae..88fbf9e 100644 --- a/OBD2-Swift/Classes/Operations/OpenOBDConnectionOperation.swift +++ b/OBD2-Swift/Classes/Operations/OpenOBDConnectionOperation.swift @@ -22,7 +22,7 @@ class OpenOBDConnectionOperation: StreamHandleOperation { didSet { if inputOpen { print("Input stream opened") - input.remove(from: .current, forMode: .defaultRunLoopMode) + input.remove(from: .current, forMode: RunLoop.Mode.default) } } } @@ -31,7 +31,7 @@ class OpenOBDConnectionOperation: StreamHandleOperation { didSet { if outOpen { print("Output stream opened") - output.remove(from: .current, forMode: .defaultRunLoopMode) + output.remove(from: .current, forMode: RunLoop.Mode.default) } } } diff --git a/OBD2-Swift/Classes/Operations/StreamHandleOperation.swift b/OBD2-Swift/Classes/Operations/StreamHandleOperation.swift index 3944fb4..1065588 100644 --- a/OBD2-Swift/Classes/Operations/StreamHandleOperation.swift +++ b/OBD2-Swift/Classes/Operations/StreamHandleOperation.swift @@ -15,8 +15,8 @@ class StreamHandleOperation: Operation, StreamDelegate { var error:Error? { didSet { - input.remove(from: .current, forMode: .defaultRunLoopMode) - output.remove(from: .current, forMode: .defaultRunLoopMode) + input.remove(from: .current, forMode: RunLoop.Mode.default) + output.remove(from: .current, forMode: RunLoop.Mode.default) } } @@ -36,8 +36,8 @@ class StreamHandleOperation: Operation, StreamDelegate { self.input.delegate = self self.output.delegate = self - input.schedule(in: .current, forMode: .defaultRunLoopMode) - output.schedule(in: .current, forMode: .defaultRunLoopMode) + input.schedule(in: .current, forMode: RunLoop.Mode.default) + output.schedule(in: .current, forMode: RunLoop.Mode.default) execute() RunLoop.current.run() } diff --git a/OBD2-Swift/Classes/Scanner/StreamHolder.swift b/OBD2-Swift/Classes/Scanner/StreamHolder.swift index 415912e..c15255b 100644 --- a/OBD2-Swift/Classes/Scanner/StreamHolder.swift +++ b/OBD2-Swift/Classes/Scanner/StreamHolder.swift @@ -48,8 +48,8 @@ class StreamHolder: NSObject { self.inputStream.delegate = nil self.outputStream.delegate = nil - self.inputStream.remove(from: RunLoop.current, forMode: RunLoopMode.defaultRunLoopMode) - self.outputStream.remove(from: RunLoop.current, forMode: RunLoopMode.defaultRunLoopMode) + self.inputStream.remove(from: RunLoop.current, forMode: RunLoop.Mode.default) + self.outputStream.remove(from: RunLoop.current, forMode: RunLoop.Mode.default) self.inputStream.close() self.outputStream.close() From 5c14b94944a2cbe124cc52e666acb0a28056ff28 Mon Sep 17 00:00:00 2001 From: Christie Davis Date: Thu, 18 Jul 2019 11:06:42 +1200 Subject: [PATCH 3/3] Remove hashable warnings --- Example/OBD2-Swift/AppDelegate.swift | 2 -- OBD2-Swift/Classes/Command/CommandMode01.swift | 14 ++++++-------- OBD2-Swift/Classes/Command/CommandMode02.swift | 12 ++++++------ OBD2-Swift/Classes/Command/CommandMode03.swift | 6 +++--- OBD2-Swift/Classes/Command/CommandMode09.swift | 6 +++--- OBD2-Swift/Classes/Command/DataRequest.swift | 5 ++--- OBD2-Swift/Classes/Model/Command.swift | 8 ++++---- OBD2-Swift/Classes/Model/Response.swift | 4 ++-- 8 files changed, 26 insertions(+), 31 deletions(-) diff --git a/Example/OBD2-Swift/AppDelegate.swift b/Example/OBD2-Swift/AppDelegate.swift index 8131d7f..086dca2 100644 --- a/Example/OBD2-Swift/AppDelegate.swift +++ b/Example/OBD2-Swift/AppDelegate.swift @@ -40,7 +40,5 @@ class AppDelegate: UIResponder, UIApplicationDelegate { func applicationWillTerminate(_ application: UIApplication) { // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. } - - } diff --git a/OBD2-Swift/Classes/Command/CommandMode01.swift b/OBD2-Swift/Classes/Command/CommandMode01.swift index 9a91f5d..528e21e 100644 --- a/OBD2-Swift/Classes/Command/CommandMode01.swift +++ b/OBD2-Swift/Classes/Command/CommandMode01.swift @@ -10,15 +10,15 @@ import Foundation public extension Command { - public enum Mode01 : CommandType { + enum Mode01 : CommandType { public typealias Descriptor = Mode01Descriptor - public var hashValue: Int { - switch self { - case .pid(number : let pid): - return Int(mode.rawValue) ^ pid - } + public func hash(into hasher: inout Hasher) { + switch self { + case .pid(number : let pid): + hasher.combine(Int(mode.rawValue) ^ pid) + } } public static func ==(lhs: Mode01, rhs: Mode01) -> Bool { @@ -37,7 +37,5 @@ public extension Command { return DataRequest(mode: mode, pid: UInt8(pid)) } } - } - } diff --git a/OBD2-Swift/Classes/Command/CommandMode02.swift b/OBD2-Swift/Classes/Command/CommandMode02.swift index 38aa2e7..416ad80 100644 --- a/OBD2-Swift/Classes/Command/CommandMode02.swift +++ b/OBD2-Swift/Classes/Command/CommandMode02.swift @@ -10,15 +10,15 @@ import Foundation public extension Command { - public enum Mode02 : CommandType { + enum Mode02 : CommandType { public typealias Descriptor = Mode01Descriptor - public var hashValue: Int { - switch self { - case .pid(number : let pid): - return Int(mode.rawValue) ^ pid - } + public func hash(into hasher: inout Hasher) { + switch self { + case .pid(number : let pid): + hasher.combine(Int(mode.rawValue) ^ pid) + } } public static func ==(lhs: Mode02, rhs: Mode02) -> Bool { diff --git a/OBD2-Swift/Classes/Command/CommandMode03.swift b/OBD2-Swift/Classes/Command/CommandMode03.swift index 5b8f446..d5cf660 100644 --- a/OBD2-Swift/Classes/Command/CommandMode03.swift +++ b/OBD2-Swift/Classes/Command/CommandMode03.swift @@ -10,12 +10,12 @@ import Foundation public extension Command { - public enum Mode03 : CommandType { + enum Mode03 : CommandType { public typealias Descriptor = Mode03Descriptor - public var hashValue: Int { - return Int(mode.rawValue) ^ 0 + public func hash(into hasher: inout Hasher) { + hasher.combine(Int(mode.rawValue) ^ 0) } public static func == (lhs: Mode03, rhs: Mode03) -> Bool { diff --git a/OBD2-Swift/Classes/Command/CommandMode09.swift b/OBD2-Swift/Classes/Command/CommandMode09.swift index 305e194..e2d1374 100644 --- a/OBD2-Swift/Classes/Command/CommandMode09.swift +++ b/OBD2-Swift/Classes/Command/CommandMode09.swift @@ -10,7 +10,7 @@ import Foundation public extension Command { - public enum Mode09 : CommandType { + enum Mode09 : CommandType { public typealias Descriptor = Mode09Descriptor @@ -24,8 +24,8 @@ public extension Command { return lhs.hashValue == rhs.hashValue } - public var hashValue: Int { - return Int(mode.rawValue ^ pid) + public func hash(into hasher: inout Hasher) { + hasher.combine(Int(mode.rawValue ^ pid)) } public var mode : Mode { diff --git a/OBD2-Swift/Classes/Command/DataRequest.swift b/OBD2-Swift/Classes/Command/DataRequest.swift index 4116ef3..d144709 100644 --- a/OBD2-Swift/Classes/Command/DataRequest.swift +++ b/OBD2-Swift/Classes/Command/DataRequest.swift @@ -52,8 +52,7 @@ extension DataRequest: Equatable { } extension DataRequest: Hashable { - - public var hashValue: Int { - return description.hash + public func hash(into hasher: inout Hasher) { + hasher.combine(description.hash) } } diff --git a/OBD2-Swift/Classes/Model/Command.swift b/OBD2-Swift/Classes/Model/Command.swift index 1437c3f..f61f174 100644 --- a/OBD2-Swift/Classes/Model/Command.swift +++ b/OBD2-Swift/Classes/Model/Command.swift @@ -39,8 +39,8 @@ public struct Command { case readDeviceIdentifier case setDeviceIdentifier(String) - public var hashValue: Int { - return Int(mode.rawValue ^ mode.rawValue) + public func hash(into hasher: inout Hasher) { + hasher.combine(Int(mode.rawValue ^ mode.rawValue)) } public static func == (lhs: AT, rhs: AT) -> Bool { @@ -86,8 +86,8 @@ public struct Command { case string(String) case digit(mode : Int, pid : Int) - public var hashValue: Int { - return Int(mode.rawValue ^ pid) + public func hash(into hasher: inout Hasher) { + hasher.combine(Int(mode.rawValue ^ pid)) } public static func == (lhs: Custom, rhs: Custom) -> Bool { diff --git a/OBD2-Swift/Classes/Model/Response.swift b/OBD2-Swift/Classes/Model/Response.swift index b20bd8d..0d0424d 100644 --- a/OBD2-Swift/Classes/Model/Response.swift +++ b/OBD2-Swift/Classes/Model/Response.swift @@ -21,8 +21,8 @@ public struct Response : Hashable, Equatable { self.timestamp = Date() } - public var hashValue: Int { - return Int(mode.rawValue ^ pid) + public func hash(into hasher: inout Hasher) { + hasher.combine(Int(mode.rawValue ^ pid)) } public static func ==(lhs: Response, rhs: Response) -> Bool {