我对台风依赖注入框架有问题。我的视图控制器MainViewController依赖于我要声明为对应于协议DataProviderProtocol的AnyObject的dataProvider属性。
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属性由Typhoon注入并初始化到实现该协议的类TestDataProvider的相应实例。但是我也有RealDataProvider,它也对应于DataProviderProtocol,有时可能会被使用
但是这段代码与消息一起崩溃
无法为对象注入属性“dataProvider”。找不到塞特选择器。确保属性的存在和可写“
如果我使用TestDataProvider的属性类,我可以在没有崩溃的情况下注入该属性,但这将禁用注入不同DataProviderProtocol实现的能力。
我理解这种情况的发生是因为DataProviderProtocol属性类型不是NSObject后续程序。但我无法在Swift中将属性声明为NSObject<DataProviderProtocol>
我很感谢你的帮助
P.S.我的装配课
public class CEAppAssembly:TyphoonAssembly {
//uiviewcontrollers' components assembly
var mainComponentsAssembly : CEMainComponentsAssembly!
/**
UI Dependencies
**/
public dynamic func mainViewController() -> AnyObject {
return TyphoonDefinition.withClass(MainViewController.self) {
(definition) in
definition.injectProperty("dataProvider", with: self.mainComponentsAssembly.dataProvider())
}
}https://stackoverflow.com/questions/33533534
复制相似问题