-
Notifications
You must be signed in to change notification settings - Fork 268
Swift Quick Start
Setting up a Dependency Injection container couldn't be more easy.
First, create a sub-class of TyphoonAssembly:
public class SwiftMiddleAgesAssembly : TyphoonAssembly {
public dynamic func basicKnight() -> AnyObject {
//Perform an initializer injection
return TyphoonDefinition.withClass(Knight.self) {
(definition) in
definition.useInitializer("initWithQuest:") {
(initializer) in
initializer.injectParameterWith(self.defaultQuest())
}
}
}
public dynamic func defaultQuest() -> AnyObject {
return TyphoonDefinition.withClass(CampaignQuest.self)
}
}
###Obtain built instances from the container as follows:
let assembly = SwiftMiddleAgesAssembly()
TyphoonAssemblyActivator.withAssembly(assembly).activate()
let knight = assembly.basicKnight() as Knight
And we're done!
- We can proceed from one object graph to another, by injecting the assembly.
- For fully Typhoon-powered apps we can bootstrap using plist integration. This gives AppDelegate injection and tight Storyboard integration.
Key Concept: Before activation each method returns in a TyphoonAssembly returns a TyphoonDefinition. After activation we'll use the same interface to return built instances. Since the type checker in Swift is strict, you can declare the return type as AnyObject
.
##IMPORTANT
Every class you want to inject has to be a subclass of NSObject
in some way (either by subclassing or adding @objc
modifier). Also if you define a protocol property in your class (e.g. var cityDao: CityDao?
), that protocol must also have the @objc
modifier). Otherwise injection will not work. See the sample project for more information.
- Here is a Swift Sample Application
Something still not clear? How about posting a question on StackOverflow.
Get started in two minutes.
Get familiar with Typhoon.
- Types of Injections
- What can be Injected
- Auto-injection (Objective-C)
- Scopes
- Storyboards
- TyphoonLoadedView
- Activating Assemblies
Become a Typhoon expert.
For contributors or curious folks.