импортировать связанный с Swift класс objc в Swift

В проекте, над которым я сейчас работаю, и Objective-C, и Swift связаны с заголовком моста, и все работает нормально. но в одном случае, когда этот конкретный viewController.h, который находится в Obj-c, уже импортирован. когда я пытаюсь получить доступ к этому viewController.h в другом контроллере Swift, он говорит, что файл «‹#project-name#>-swift.h» не найден

Подскажите, как мне быстро получить доступ к этому файлу objC :(

Отредактировано: подробно!!

У меня есть файл viewController.h, в котором я внедрил быстрые модели, импортировав '‹#project-name#>-swift.h'

но когда я пытаюсь получить доступ к этому viewController.h из SecondViewController.swift, мне нужно добавить этот #import "viewController.h" в заголовок моста моего проекта. Если я это сделаю, я получаю сообщение об ошибке '‹#project-name#>-swift.h' file not found


person Raghav7890    schedule 26.05.2017    source источник
comment
@Ved :: обновил мой вопрос ... моя проблема не в заголовке моста ... а в повторном использовании objc в swift, в котором импортирован заголовок header.h !! Уже   -  person Raghav7890    schedule 26.05.2017


Ответы (1)


Если я правильно понимаю, что вы делаете, проблема в том, что заголовок projectname-Swift.h включен в заголовок (viewController.h), который, в свою очередь, импортируется в заголовок моста.

Документация по адресу https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-ID122 рассказывает о включая сгенерированный заголовок *-Swift.h в файлы .m, а не в заголовки, предлагая не включать его в заголовки, чтобы избежать циклических зависимостей. Вы по-прежнему можете включить его в заголовок, но это сломается, если заголовок будет включен в заголовок моста.

Я бы импортировал *-Swift.h в viewController.m, а не viewController.h. Если вам нужно сослаться на тип Swift как на свойство, аргумент или тип возвращаемого значения в viewController.h, вы можете использовать предварительные объявления, например

@class MySwiftModelClass;

Если классы, объявленные в viewController.h, расширяют MySwiftModelClass, все становится немного сложнее. Пожалуйста, опубликуйте более конкретный краткий пример, если это так.

person Anatoli P    schedule 27.05.2017
comment
Привет! Спасибо за ответ. в значительной степени Вы получили то, что я искал ... ДА, в документации от Apple говорится, что нужно импортировать заголовок моста в файл .m, чтобы избежать циклических зависимостей. Да, мой класс расширяет swift в .h (мои заголовки имеют некоторые методы, которые возвращают стремная модель) - person Raghav7890; 27.05.2017