Как импортировать файл swift в класс targe t-c для делегирования классов?

Я разрабатываю свой с помощью swift, Теперь некоторые из моих старых файлов написаны на target-c. Поэтому я создаю мост для классного общения.

Один из моих классов делегатов написан на target-c. Теперь я хочу знать, какой класс является текущим, который вызывает мой делегат.

Я пытаюсь с isKindOfCalss, его огонь ошибка как идентифицирует не найден. После того, как я импортирую файл swift, ошибка изменяется на прямое объявление.

Любые предложения, что я должен сделать для такой необходимости?

Также импорт не работает в моем случае, пожалуйста, смотрите прикрепленные изображения.

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

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

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

3 ответа

Судя по вашему ответу, в ваших заявлениях на импорт отсутствует заглавная буква S в Swift.

попробуйте изменить

#import "HomeVC-swift.h" 

в

#import "HomeVC-Swift.h"

Раньше я не сталкивался с вашей проблемой, но я могу предложить вам просто переписать этот код без использования isKindOfClass. Вы можете использовать некоторое возвращенное перечисление из базового класса, а затем проверить его

@objc enum EnumSubstitution: Int {
    // several options
}

protocol YourDelegateProtocol {
   // your methods
   var enumSubstitutionForIsKindOf: EnumSubstitution {get}
}

Я не проверял код, но, предположим, у вас есть идея

Редакция:

Я имею в виду, вы можете использовать EnumSubstitution выше в вашем коде, поэтому вместо написания

if ([self.delegate isKindOfClass: [yourClass class]])

вы просто используете

if (self.delegate.enumSubstitutionForIsKindOf == firstOption)

и так далее

Вот документация по включению кода Swift в код Objective-C:

Смешивать и сочетать

Это сводится к использованию этого стиля импорта:

#import "ProductModuleName-Swift.h”

Что вы, кажется, уже делаете. Убедитесь, что вы используете правильное имя модуля. Определение модуля:

Модуль - это единая единица распределения кода - платформа или приложение, которое создается и поставляется как единое целое и может быть импортировано другим модулем с ключевым словом import Swift.

Каждая цель сборки (например, комплект приложений или инфраструктура) в XCode рассматривается как отдельный модуль в Swift. Если вы сгруппируете аспекты кода вашего приложения в автономную среду - возможно, для инкапсуляции и повторного использования этого кода в нескольких приложениях - тогда все, что вы определите в этой среде, будет частью отдельного модуля, когда он будет импортирован и использован в приложении. или когда он используется в других рамках.

Если у вас все еще есть проблемы, я предлагаю вам выполнить полную очистку и сборку для каждого модуля в вашем проекте, у вас может быть какая-то часть, которая содержит ошибки и загружается неправильно.

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