我遇到Typhoon依赖注入框架的问题。
我的viewcontroller MainViewController
取决于我要声明为dataProvider
的{{1}}属性,对应于协议AnyObject
DataProviderProtocol
我希望Typhoon注入此class MainViewController: UIViewController {
// Compiler error here
var dataProvider : DataProviderProtocol!
// something more
}
protocol DataProviderProtocol {
func fetchAllBanks(closure : ([BankObject]) -> Void)
}
class TestDataProvider: NSObject, CEDataProviderProtocol {
func fetchAllBanks(closure : ([CEBankObject]) -> Void) {
var resultBanks = ///////code that creates test data
closure(resultBanks);
}
属性并初始化为实现此协议的类dataProvider
的相应实例。但我也TestDataProvider
也对应RealDataProvider
,有时可能会使用
但是这段代码与消息
崩溃了无法为对象注入属性'dataProvider' ''。塞特选择器没有 找到。确保该属性存在且可写'
如果我使用DataProviderProtocol
的属性类,我可以在不崩溃的情况下注入此属性,但这会禁用注入不同TestDataProvider
实现的功能。
我理解这次崩溃是因为DataProviderProtocol
属性类型不是DataProviderProtocol
后继者。但我找不到在Swift
NSObject
的方法
我将不胜感激任何帮助
P.S。我的装配课
NSObject<DataProviderProtocol>
答案 0 :(得分:3)
Typhoon使用Objective-C运行时内省和动态功能。因此:
Quick Start指南中有关于此的更多信息。如果您在审核并进行这些更改后仍然遇到问题,请告诉我们。
我们计划在不久的将来发布Pure Swift版本的Typhoon。