❤️ Support my app ❤️
- Push Hero - pure Swift native macOS application to test push notifications
- PastePal - Pasteboard, note and shortcut manager
- Frame recorder - Recorder gif and video with frame
- Alias - App and file shortcut manager
- Other apps
❤️❤️😇😍🤘❤️❤️
A simple resolver for Swift
[](https://travis-ci.org/Khoa Pham/Resolver)
To run the example project, clone the repo, and run pod install
from the Example directory first.
Taking example from Swinject
Supposed we have classes and protocols like this
protocol AnimalType {
var name: String? { get }
}
class Cat: AnimalType {
let name: String?
init(name: String?) {
self.name = name
}
}
protocol PersonType {
var pet: AnimalType { get }
func play() -> String
}
class PetOwner: PersonType {
let pet: AnimalType
init(pet: AnimalType) {
self.pet = pet
}
func play() -> String {
let name = pet.name ?? "someone"
return "I'm playing with \(name)."
}
}
let resolver = Resolver()
resolver.register {
Cat(name: "tom") as AnimalType
}
let cat = try! resolver.resolve() as AnimalType
XCTAssert(cat.name == "tom")
let resolver = Resolver()
resolver.register(tag: "tom") {
Cat(name: "tom") as AnimalType
}
resolver.register(tag: "meo") {
Cat(name: "meo") as AnimalType
}
let tom = try! resolver.resolve(tag: "tom") as AnimalType
let meo = try! resolver.resolve(tag: "meo") as AnimalType
XCTAssert(tom.name == "tom")
XCTAssert(meo.name == "meo")
let resolver = Resolver()
resolver.register {
Cat(name: "tom") as AnimalType
}
resolver.register { cat in
PetOwner(pet: cat) as PersonType
}
let cat = try! resolver.resolve() as AnimalType
let owner = try! resolver.resolve(arg1: cat) as PersonType
XCTAssert(owner.pet.name == "tom")
XCTAssert(owner.play() == "I'm playing with tom.")
let cat = Cat(name: "tom") as AnimalType
let resolver = Resolver()
resolver.registerSingleton(cat)
let someCat = try! resolver.resolve() as AnimalType
XCTAssert(someCat as! Cat === cat as! Cat)
Resolver is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "Resolver"
Khoa Pham, onmyway133@gmail.com
Resolver is available under the MIT license. See the LICENSE file for more info.