Skip to content

Commit fa4cfef

Browse files
committed
Merge branch 'release/1.0.0'
2 parents 17507e1 + ae8a959 commit fa4cfef

7 files changed

Lines changed: 41 additions & 37 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ playground.xcworkspace
4444
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
4545
#
4646
Pods/
47+
Podfile.lock
4748

4849
# Carthage
4950
#

.travis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
osx_image: xcode8.2
1+
osx_image: xcode8.3
22
language: objective-c
33
cache:
44
- bundler
@@ -13,7 +13,7 @@ before_install:
1313
- gem install bundler
1414
- brew update
1515
- bundle install && brew bundle
16-
- bundle exec pod repo update --silent
16+
- bundle exec pod repo update
1717
script:
1818
- bundle exec fastlane run_tests
1919
after_success:

Podfile.lock

Lines changed: 0 additions & 15 deletions
This file was deleted.

Sources/Map+DependencyInjector.swift

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,15 @@ import ObjectMapper
1010

1111
public extension Map {
1212

13-
public func injectedValue<BM>(_ key: String) throws -> BM {
14-
return try self.value(key, using: InjectorTransformerRegistry.default.get(BM.self))
13+
public func injectedValue<BM>(_ key: String, type: BM.Type) throws -> BM {
14+
return try self.value(key, using: InjectorTransformerRegistry.default.get(type))
1515
}
1616

17-
public func inject<BM>(_ key: String) -> (Map, InjectorTransformer<BM>) {
18-
return (self[key], InjectorTransformerRegistry.default.get(BM.self))
17+
public func injectedValue<BM>(_ key: String, type: BM.Type) throws -> [BM] {
18+
return try self.value(key, using: InjectorTransformerRegistry.default.get(type))
19+
}
20+
21+
public func inject<BM>(_ key: String, type: BM.Type) -> (Map, InjectorTransformer<BM>) {
22+
return (self[key], InjectorTransformerRegistry.default.get(type))
1923
}
2024
}

Tests/DependencyInjectorObjectMapperTests/DependencyInjectorObjectMapperTests.swift

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,15 @@ class DependencyInjectorObjectMapperTests: XCTestCase {
1818
let injector = Injector.default
1919
let user = try? injector.inject(User.self, arguments: [
2020
"id": "1",
21-
"address": [
22-
"street": "abc",
23-
"zipCode": "75116",
24-
"country": "France"
21+
"addresses": [
22+
[
23+
"street": "abc",
24+
"zipCode": "75116",
25+
"country": "France"
26+
]
2527
]
2628
])
27-
XCTAssertNotNil(user?.address)
29+
XCTAssertNotNil(user?.addresses)
2830
}
2931

3032
func testReverseTransformInjectNestedObject() {
@@ -36,12 +38,14 @@ class DependencyInjectorObjectMapperTests: XCTestCase {
3638
]
3739
let user = try? injector.inject(User.self, arguments: [
3840
"id": "1",
39-
"address": dict
41+
"addresses": [
42+
dict
43+
]
4044
])
41-
guard let trans = user?.address.toJSON() else {
45+
guard let addresses = user?.addresses else {
4246
XCTFail("The dictionary cannot be nil")
4347
return
4448
}
45-
XCTAssertEqual(trans.map { $0.key }, dict.map { $0.key })
49+
XCTAssertEqual(addresses[0].street, "abc")
4650
}
4751
}

Tests/DependencyInjectorObjectMapperTests/User.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@ import ObjectMapper
1212
public protocol User: BaseMappable {
1313
var id: String { get set }
1414
var created: Date? { get set }
15-
var address: Address { get set }
15+
var addresses: [Address] { get set }
1616
}

Tests/DependencyInjectorObjectMapperTests/UserModel.swift

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,25 +13,35 @@ import DependencyInjectorObjectMapper
1313
class UserModel: User, Mappable {
1414
public var id: String
1515
public var created: Date?
16-
public var address: Address
16+
public var addresses: [Address]
1717

18-
public init(id: String, address: Address) {
18+
public init(id: String, addresses: [Address]) {
1919
self.id = id
20-
self.address = address
20+
self.addresses = addresses
2121
}
2222

23-
public convenience required init?(map: Map) {
23+
public required init?(map: Map) {
2424
guard
2525
let id: String = try? map.value("id"),
26-
let address: Address = try? map.injectedValue("address") else {
26+
let addresses: [Address] = try? map.injectedValue("addresses", type: Address.self) else {
2727
return nil
2828
}
29-
self.init(id: id, address: address)
29+
self.id = id
30+
self.addresses = addresses
3031
}
3132

3233
public func mapping(map: Map) {
3334
self.id >>> map["id"]
3435
self.created <- map["createdAt"]
35-
self.address >>> map.inject("address")
36+
self.addresses >>> map.inject("addresses", type: Address.self)
37+
}
38+
}
39+
40+
class Sample: UserModel {
41+
public let sample: String
42+
43+
public required init?(map: Map) {
44+
self.sample = ""
45+
super.init(map: map)
3646
}
3747
}

0 commit comments

Comments
 (0)