Этот код работает с библиотекой внедрения зависимостей Typhoon (Obj-C) в Swift 2.3, но не в Swift 3:
AppDelegate:
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var rootViewController: RootViewController?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.rootViewController = self.rootViewController
self.window?.makeKeyAndVisible()
return true
}
...
}
Сборка приложения:
public class ApplicationAssembly: TyphoonAssembly {
public dynamic func config() -> AnyObject {
return TyphoonDefinition.withConfigName("Configuration.plist")
}
public dynamic func appDelegate() -> AnyObject {
return TyphoonDefinition.withClass(AppDelegate.self) {
(definition) in
definition!.injectProperty(#selector(ApplicationAssembly.rootViewController), with: self.rootViewController())
}
}
...
}
Однако следующая ошибка отображается в ApplicationAssembly для любого файла Swift 3, который, как ожидается, вернет «AnyObject»: «Ни один кандидат «withClass» не создает ожидаемый тип контекстного результата «AnyObject»
Может ли кто-нибудь понять несовместимость кодовой базы Obj-c Typhoon со Swift 3?
public dynamic func mainUIController() -> AnyObject { return TyphoonDefinition.withClass(MainUIViewController.self) as! AnyObject { (definition) in ...
- person XyrisKenn   schedule 08.03.2017