Как сослаться на делегата swift в приложении c

Я пытаюсь сослаться на делегат быстрого приложения в контроллере представления C, поскольку я хочу отправить данные, помещенные в NSMutableArray в core data,

Я импортировал

#import "SPOTEVENT-EventNotificationApp-Bridging-Header.h"
#import "AppDelegate.swift"

в контроллере представления цели C, но всякий раз, когда я пытаюсь создать экземпляр делегата приложения, он выдает ошибку

"Неизвестное имя типа"

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    AppDelegate   *appDelegate;
    NSManagedObjectContext *context;

2 ответа

Bridging Header позволяет использовать код Objective-C в Swift. Вам необходимо импортировать Generated Interface Header использовать Swift-код в Objective-C

В разделе " Настройки сборки " вашей цели найдите Objective-C Generated Interface Header Name установка. Это нормально <TargetName>-Swift.h

введите описание изображения здесь

Обычно вы импортируете в .m файл, чтобы увидеть классы Swift.

#import "MyTarget-Swift.h"

Вам может понадобиться импорт в .h Если вы принимаете протоколы Swift в OC, но это может привести к циклическим зависимостям с Bridging Header, так что будьте осторожны.

Если AppDelegate класс все еще не появляется, возможно, вам нужно добавить @objc к объявлению класса или проверьте, использует ли ваш класс какие-либо функции Swift, которые бы препятствовали экспорту. Вы можете Command-Click оператор import, чтобы увидеть содержимое заголовка, которое может быть полезно для отладки.

Сделайте этот шаг, чтобы использовать файл swift в файле target-c.

1) #Import "YourProjectName-swift.h" in Objective-C (.m) file

2) Теперь создайте экземпляр AppDelegate, как показано ниже.

AppDelegate *appDel = (AppDelegate*)[[UIApplication sharedApplication] delegate];

Примечание:- вы должны добавить заголовок моста в вашем проекте.

Другие вопросы по тегам