Как импортировать файл 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. Если вы сгруппируете аспекты кода вашего приложения в автономную среду - возможно, для инкапсуляции и повторного использования этого кода в нескольких приложениях - тогда все, что вы определите в этой среде, будет частью отдельного модуля, когда он будет импортирован и использован в приложении. или когда он используется в других рамках.
Если у вас все еще есть проблемы, я предлагаю вам выполнить полную очистку и сборку для каждого модуля в вашем проекте, у вас может быть какая-то часть, которая содержит ошибки и загружается неправильно.