2015-09-06 3 views
4

У меня возникла проблема с внедрением defaultAssembly() для моего быстрого приложения. Мне нужно получить доступ к одной из зависимостей непосредственно из устаревшего кода.Typhoon defaultAssembly() в Swift

Приложение полностью интегрировано с тайфуном - с инициализацией Plist и раскадровки.

Первой проблемой было установить сборку по умолчанию, потому что она создается автоматически из plist. В конце концов я просто сделал его по умолчанию после активации. Я не знаю, правильно ли это, но, похоже, работает.

public override func activate() -> AppAssembly! { 
    var instance = super.activate() as! AppAssembly 
    instance.makeDefault() 
    return instance 
} 

Реальная проблема, когда я получить его так:

var assembly = TyphoonAssembly.defaultAssembly() as! AppAssembly 

Я получаю сообщение об ошибке:

Could not cast value of type 'TyphoonBlockComponentFactory' (0x10f78bc40) to 'AppAssembly' 

Как я должен затем восстановить его? Или я неправильно установил сборку по умолчанию?

Благодаря Tomas

ответ

3

Вы правы - это не правильный способ сделать сборку по умолчанию с помощью интеграции Plist.

Вместо сборки , как показано выше, возьмите тот, который был объявлен в plist, и сделайте его по умолчанию. Для этого:

public dynamic func appDelegate() -> AnyObject { 
    return TyphoonDefinition.withClass(AppDelegate.self) { 
     (definition) in 

     definition.injectProperty("assembly", with: self) 
    } 
} 

, а затем в AppDelegate:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    self.assembly.makeDefault() 
} 

К сожалению, хотя, это не решит вашу проблему с броском - это выглядит как система Swift типа является препятствование вещи - это было зарегистрирован как ошибка. В то же время, пожалуйста, используйте:

var factory = TyphoonComponentFactory.defaultFactory() 
var something = factory.componentForKey("someKey") 

. , , где ключ - это имя метода в любой из ваших сборок.

+0

Сообщение об ошибке: https://github.com/appsquickly/Typhoon/issues/409 –

+0

Спасибо, что решает проблему. –

Смежные вопросы