diff --git a/ObjectMapper.xcodeproj/project.pbxproj b/ObjectMapper.xcodeproj/project.pbxproj
index 8e6e8c6d..329a283b 100644
--- a/ObjectMapper.xcodeproj/project.pbxproj
+++ b/ObjectMapper.xcodeproj/project.pbxproj
@@ -728,11 +728,11 @@
};
6AAC8F7519F03C2900E7A677 = {
CreatedOnToolsVersion = 6.0.1;
- LastSwiftMigration = 0900;
+ LastSwiftMigration = 1120;
};
6AAC8F8019F03C2900E7A677 = {
CreatedOnToolsVersion = 6.0.1;
- LastSwiftMigration = 0900;
+ LastSwiftMigration = 1120;
};
CD1602FE1AC023D5000CD69A = {
CreatedOnToolsVersion = 6.2;
@@ -1108,7 +1108,7 @@
PRODUCT_NAME = "$(PROJECT_NAME)";
SDKROOT = appletvos;
SKIP_INSTALL = YES;
- SWIFT_VERSION = 4.2;
+ SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 9.0;
WATCHOS_DEPLOYMENT_TARGET = 2.0;
@@ -1137,7 +1137,7 @@
PRODUCT_NAME = "$(PROJECT_NAME)";
SDKROOT = appletvos;
SKIP_INSTALL = YES;
- SWIFT_VERSION = 4.2;
+ SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 9.0;
WATCHOS_DEPLOYMENT_TARGET = 2.0;
@@ -1156,7 +1156,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "com.tristanhimmelman.ObjectMapper-tvOSTests";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = appletvos;
- SWIFT_VERSION = 4.2;
+ SWIFT_VERSION = 5.0;
TVOS_DEPLOYMENT_TARGET = 9.0;
};
name = Debug;
@@ -1174,7 +1174,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "com.tristanhimmelman.ObjectMapper-tvOSTests";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = appletvos;
- SWIFT_VERSION = 4.2;
+ SWIFT_VERSION = 5.0;
TVOS_DEPLOYMENT_TARGET = 9.0;
};
name = Release;
@@ -1200,7 +1200,7 @@
PRODUCT_NAME = "$(PROJECT_NAME)";
SDKROOT = watchos;
SKIP_INSTALL = YES;
- SWIFT_VERSION = 4.2;
+ SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 4;
TVOS_DEPLOYMENT_TARGET = 9.0;
WATCHOS_DEPLOYMENT_TARGET = 2.0;
@@ -1228,7 +1228,7 @@
PRODUCT_NAME = "$(PROJECT_NAME)";
SDKROOT = watchos;
SKIP_INSTALL = YES;
- SWIFT_VERSION = 4.2;
+ SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 4;
TVOS_DEPLOYMENT_TARGET = 9.0;
WATCHOS_DEPLOYMENT_TARGET = 2.0;
@@ -1363,8 +1363,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "com.tristanhimmelman.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(PROJECT_NAME)";
SKIP_INSTALL = YES;
- SWIFT_SWIFT3_OBJC_INFERENCE = Default;
- SWIFT_VERSION = 4.2;
+ SWIFT_VERSION = 5.0;
TVOS_DEPLOYMENT_TARGET = 9.0;
WATCHOS_DEPLOYMENT_TARGET = 2.0;
};
@@ -1385,8 +1384,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "com.tristanhimmelman.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(PROJECT_NAME)";
SKIP_INSTALL = YES;
- SWIFT_SWIFT3_OBJC_INFERENCE = Default;
- SWIFT_VERSION = 4.2;
+ SWIFT_VERSION = 5.0;
TVOS_DEPLOYMENT_TARGET = 9.0;
WATCHOS_DEPLOYMENT_TARGET = 2.0;
};
@@ -1404,8 +1402,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "com.heart.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_SWIFT3_OBJC_INFERENCE = Default;
- SWIFT_VERSION = 4.0;
+ SWIFT_VERSION = 5.0;
};
name = Debug;
};
@@ -1417,8 +1414,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "com.heart.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_SWIFT3_OBJC_INFERENCE = Default;
- SWIFT_VERSION = 4.0;
+ SWIFT_VERSION = 5.0;
};
name = Release;
};
@@ -1446,7 +1442,7 @@
PRODUCT_NAME = "$(PROJECT_NAME)";
SDKROOT = macosx;
SKIP_INSTALL = YES;
- SWIFT_VERSION = 4.2;
+ SWIFT_VERSION = 5.0;
TVOS_DEPLOYMENT_TARGET = 9.0;
WATCHOS_DEPLOYMENT_TARGET = 2.0;
};
@@ -1474,7 +1470,7 @@
PRODUCT_NAME = "$(PROJECT_NAME)";
SDKROOT = macosx;
SKIP_INSTALL = YES;
- SWIFT_VERSION = 4.2;
+ SWIFT_VERSION = 5.0;
TVOS_DEPLOYMENT_TARGET = 9.0;
WATCHOS_DEPLOYMENT_TARGET = 2.0;
};
@@ -1495,7 +1491,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "com.heart.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
- SWIFT_VERSION = 4.2;
+ SWIFT_VERSION = 5.0;
};
name = Debug;
};
@@ -1512,7 +1508,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "com.heart.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = macosx;
- SWIFT_VERSION = 4.2;
+ SWIFT_VERSION = 5.0;
};
name = Release;
};
@@ -1536,7 +1532,7 @@
PRODUCT_NAME = ObjectMapper;
SDKROOT = macosx;
SKIP_INSTALL = YES;
- SWIFT_VERSION = 4.2;
+ SWIFT_VERSION = 5.0;
};
name = Debug;
};
@@ -1561,7 +1557,7 @@
PRODUCT_NAME = ObjectMapper;
SDKROOT = macosx;
SKIP_INSTALL = YES;
- SWIFT_VERSION = 4.2;
+ SWIFT_VERSION = 5.0;
};
name = Release;
};
diff --git a/ObjectMapper.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ObjectMapper.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 00000000..18d98100
--- /dev/null
+++ b/ObjectMapper.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/Tests/ObjectMapperTests/ImmutableTests.swift b/Tests/ObjectMapperTests/ImmutableTests.swift
index bafba916..f722add1 100644
--- a/Tests/ObjectMapperTests/ImmutableTests.swift
+++ b/Tests/ObjectMapperTests/ImmutableTests.swift
@@ -201,12 +201,12 @@ class ImmutableObjectTests: XCTestCase {
XCTAssertEqual(immutable.delimiterNestedDictionary, ["a": 10, "b": 20, "c": 30])
let JSON2: [String: Any] = [ "prop1": "prop1", "prop2": NSNull() ]
- let immutable2 = try? mapper.map(JSON: JSON2)
+ let immutable2 = try? mapper.map(JSON: JSON2) as Struct
XCTAssertNil(immutable2)
// TODO: ImmutableMappable to JSON
let JSONFromObject = mapper.toJSON(immutable)
- let objectFromJSON = try? mapper.map(JSON: JSONFromObject)
+ let objectFromJSON = try? mapper.map(JSON: JSONFromObject) as Struct
XCTAssertNotNil(objectFromJSON)
assertImmutableObjectsEqual(objectFromJSON!, immutable)
}
diff --git a/Tests/ObjectMapperTests/MapContextTests.swift b/Tests/ObjectMapperTests/MapContextTests.swift
index bc6c4ace..3bf4e250 100644
--- a/Tests/ObjectMapperTests/MapContextTests.swift
+++ b/Tests/ObjectMapperTests/MapContextTests.swift
@@ -138,7 +138,7 @@ class MapContextTests: XCTestCase {
let JSON = ["name": "Anton"]
let context = ImmutableContext(isDeveloper: true)
- let person = try? Mapper(context: context).map(JSON: JSON)
+ let person = try? Mapper(context: context).map(JSON: JSON) as ImmutablePerson
XCTAssertNotNil(person)
@@ -149,7 +149,7 @@ class MapContextTests: XCTestCase {
let JSON = ["name": "Anton"]
let context = ImmutableContext(isDeveloper: true)
- let person = try? ImmutablePerson(JSON: JSON, context: context)
+ let person = try? ImmutablePerson(JSON: JSON, context: context) as ImmutablePerson
XCTAssertNotNil(person)
XCTAssertEqual(person?.isDeveloper ?? !context.isDeveloper, context.isDeveloper)
@@ -172,7 +172,7 @@ class MapContextTests: XCTestCase {
let JSON = ["person": ["name": "Anton"]]
let context = ImmutableContext(isDeveloper: true)
- let nestedPerson = try? Mapper(context: context).map(JSON: JSON)
+ let nestedPerson = try? Mapper(context: context).map(JSON: JSON) as ImmutableNestedPerson
XCTAssertNotNil(nestedPerson)
XCTAssertEqual(nestedPerson?.person.isDeveloper ?? !context.isDeveloper, context.isDeveloper)
@@ -182,7 +182,7 @@ class MapContextTests: XCTestCase {
let JSON = ["person": ["name": "Anton"]]
let context = ImmutableContext(isDeveloper: true)
- let nestedPerson = try? ImmutableNestedPerson(JSON: JSON, context: context)
+ let nestedPerson = try? ImmutableNestedPerson(JSON: JSON, context: context) as ImmutableNestedPerson
XCTAssertNotNil(nestedPerson)
XCTAssertEqual(nestedPerson?.person.isDeveloper ?? !context.isDeveloper, context.isDeveloper)
@@ -207,7 +207,7 @@ class MapContextTests: XCTestCase {
let JSON = ["persons": [["name": "Tristan"], ["name": "Anton"]]]
let context = ImmutableContext(isDeveloper: true)
- let personList = try? Mapper(context: context).map(JSON: JSON)
+ let personList = try? Mapper(context: context).map(JSON: JSON) as ImmutablePersonList
XCTAssertNotNil(personList)
@@ -220,7 +220,7 @@ class MapContextTests: XCTestCase {
let JSON = ["persons": [["name": "Tristan"], ["name": "Anton"]]]
let context = ImmutableContext(isDeveloper: true)
- let personList = try? ImmutablePersonList(JSON: JSON, context: context)
+ let personList = try? ImmutablePersonList(JSON: JSON, context: context) as ImmutablePersonList
XCTAssertNotNil(personList)
diff --git a/Tests/ObjectMapperTests/MappableExtensionsTests.swift b/Tests/ObjectMapperTests/MappableExtensionsTests.swift
index b885cf1f..d3ee7960 100644
--- a/Tests/ObjectMapperTests/MappableExtensionsTests.swift
+++ b/Tests/ObjectMapperTests/MappableExtensionsTests.swift
@@ -44,12 +44,14 @@ struct TestMappable: Mappable, Equatable, Hashable {
mutating func mapping(map: Map) {
value <- map["value"]
}
-
- var hashValue: Int {
+
+
+ func hash(into hasher: inout Hasher) {
if let value = value {
- return value.hashValue
+ hasher.combine(value)
+ } else {
+ hasher.combine(NSIntegerMax)
}
- return NSIntegerMax
}
}
diff --git a/Tests/ObjectMapperTests/PerformanceTests.swift b/Tests/ObjectMapperTests/PerformanceTests.swift
index 6e0620ba..fa2819be 100644
--- a/Tests/ObjectMapperTests/PerformanceTests.swift
+++ b/Tests/ObjectMapperTests/PerformanceTests.swift
@@ -71,7 +71,7 @@ class PerformanceTests: XCTestCase {
func testPerformanceImmutable() {
self.measure {
- _ = try? Mapper().mapArray(JSONString: self.JSONTestString)
+ _ = try? Mapper().mapArray(JSONString: self.JSONTestString) as [PerformanceImmutableMappableObject]
}
}
}