Использование встроенного свойства typhoon в другом определении

У меня проблема с картой Typhoon. У меня есть сборка, которая построит мою модель данных:

- (DataModel *)dataModel { return [TyphoonDefinition withClass:[DataModel class]]; } 

теперь я хочу собрать все мои модели просмотра. В одном определении мне нужно решить, был ли пароль уже установлен пользователем. Эта информация хранится в модели данных. Поэтому мое определение выглядит так:

 - (id)passViewModel { return [TyphoonDefinition withClass:[PasscodeViewModel class] configuration:^(TyphoonDefinition *definition) { [definition useInitializer:@selector(initwithType:) parameters:^(TyphoonMethod *initializer) { NSNumber *type = [self.modelAssembly dataModel] isPasscodeSet ? @(TypeReturning) : @(TypeNew); [initializer injectParameterWith:type]; }]; }]; } 

Проблема в том, что когда определения активируются, dataModel – это TyphoonDefinition, а не DataModel.

Есть ли какой-либо метод, который может позволить мне получить значение свойства dataModel?

РЕДАКТИРОВАТЬ:

В соответствии с приведенным ниже ответом моя сборка выглядит следующим образом:

 - (UIViewController *)passcodeViewController { return [TyphoonDefinition withOption:[(id)[self.modelAssembly dataModel] property:@selector(isPasscodeSet)] yes:[self passcodeViewController:@(TypeReturning)] no:[self passcodeViewController:@(TypeNew)]]; } - (UIViewController *)passcodeViewController:(NSNumber *)entryType { return [TyphoonDefinition withClass:[PasscodeViewController class] configuration:^(TyphoonDefinition *definition) { [definition injectProperty:@selector(entryType) with:entryType]; [definition injectProperty:@selector(viewModel) with:[self.viewModelsAssembly passcodeViewModel:entryType]]; }]; } 

Я использую «passcodeViewController» в качестве тайфуна в раскадровке. К сожалению, viewModel и entryType, которые я пытаюсь ввести, равны нулю.

  • Распаковка тайфуна: ввод IBOutlet View в зависимость от контроллера
  • Тайфун нельзя использовать после сборки картографа. Файл «TyphoonFactoryDefinition.h» не найден
  • Невозможно ввести свойство, селектор не найден
  • Тайфун: создаваемые ViewControllers для сборки и раскадровки
  • Typhoon - использование одного компонента на всей территории приложения
  • Ошибка Swift Typhoon в целевых тестах - не подкласс сборки тайфуна
  • Тайфун и ограничение @objc в протоколах
  • Как вводить поддельные, закодированные или макетные зависимости для тестов интеграции с использованием Typhoon
  • One Solution collect form web for “Использование встроенного свойства typhoon в другом определении”

    Вы правы, сборка может быть либо активной, либо неактивной, поэтому она не предназначена для того, чтобы делать то, что вы хотели бы сделать. Поэтому для вашего прецедента используется специальная функция Typhoon Option Matcher .

    Вы можете вернуть одно определение или другое на основе начала другого объекта в (активированной) сборке или аргументе времени выполнения. Пример:

     - (id)passViewModel { return [TyphoonDefinition withOption:[(id)[self.modelAssembly dataModel] property:@selector(isPasscodeSet)] yes:[self passViewModelWithType:@(TypeReturning)] no:[self passViewModelWithType:@(TypeNew)]]; } - (id)passViewModelWithType:(NSNumber *)type { return [TyphoonDefinition withClass:[PasscodeViewModel class] configuration:^(TyphoonDefinition *definition) { [definition useInitializer:@selector(initwithType:) parameters:^(TyphoonMethod *initializer) { [initializer injectParameterWith:type]; }]; }]; } 

    Соответствует ли это вашим потребностям? Возможно, вы можете объединить это с заводскими определениями .

    Interesting Posts

    Xcode не показывает мои кнопки, метки, текстовые поля и представления

    Методы ввода данных UICollectionView не вызываются, но устанавливаются в init

    Создать идентификатор iCloud в панели разработчиков iOS

    Как очистить предпочтение iOS push-уведомления для моего приложения?

    Пример экрана входа в систему на основе раскадровки

    AppCode: отключить автоматическую привязку

    WKWebView: попытка синхронного запроса javascript из основного потока

    Как уволить несколько currentModalViewControllers и вернуться к корневому контроллеру панели вкладок?

    Как заставить моего персонажа «кататься» вместе с движущимися платформами?

    Facebook не отображается в UIActivityViewController, но твиттер делает

    Какова наилучшая практика использования селектора в Notification

    «Невозможно создать XXX-Info.plist» с использованием Jenkins

    iOS-Как отображать цвет золота

    Как преобразовать буфер kCVPixelFormatType_420YpCbCr8BiPlanarFullRange в UIImage в iOS

    UISearchController – панель поиска исчезает из обложки при касании

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.