Как импортировать и использовать Swift Pod Framework в проекте Objective-C
Я пытался проверить CocoaPods новую настройку фреймворка, чтобы получить некоторые стручки, и у меня возникли проблемы с использованием Swift в моем проекте Objective-C.
во-первых, это CocoaPods prerelease 0.35, вы можете прочитать о том, как использовать и установить его здесь.
вот мой текущий Подфайл:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
pod 'MBProgressHUD'
pod 'SLPagingViewSwift'
MBProgressHUD общий вращающийся индикатор, и SLPagingViewSwift случайный проект я нашел, введя Свифт в в cocoapods поиск. Вот это ViewController.m в моем проекте:
#import "ViewController.h"
@import SLPagingViewSwift;
@import MBProgressHUD;
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
// Works just fine
MBProgressHUD *hud = [[MBProgressHUD alloc] initWithView:self.view];
[self.view addSubview:hud];
[hud show:YES];
// Causes Error -- Won't build
SLPagingViewSwift *sl = [[SLPagingViewSwift alloc] init];
}
@end
здесь SLPagingViewSwift объявления:
class SLPagingViewSwift: UIViewController, UIScrollViewDelegate {
как вы можете видеть, он наследует от UIViewController, так что это не должно быть проблемой, чтобы просто выделить его и инициализировать его. Если я добавлю файл отдельно как просто файл, приведенный выше код работает просто отлично. Я знаю, что это работает.
tl; dr
как я могу использовать чистый Swift фреймворк, созданный CocoaPods в чистом Objective-C класс?
устранение неисправностей
в основном я пробовал различные импорта. Компания Apple рекомендует @import стиль здесь

но я пробовал несколько других сортов:
// Compiler Error
#import <SLPagingViewSwift/SLPagingViewSwift.h>
// Builds Fine -- Doesn't Work
#import <SLPagingViewSwift/SLPagingViewSwift-Swift.h>
#import "SLPagingViewSwift-Swift.h"
Я также время от времени пробовал несколько других библиотек Swift, чтобы узнать, могу ли я что-нибудь щелкнуть.
Я не вижу ничего на Cocoapods вопросы, которые могут помочь этому, я также ничего не нашел в своем блоге / релизе.
Примечание
если я добавлю SLPagingViewSwift.swift файл отдельно для проекта по старинке, он работает просто отлично.
1 ответ:
Я думаю, что вы должны объявить Свифт класса как public, иначе это трактуется как внутренний класс и можно было увидеть только в одном модуле, и это может быть причиной, почему при добавлении его в тот же проект, файлы работают, но в рамках не. Другая вещь, которая приходит в голову, что база может понадобиться, чтобы добавить @взаимодействию их в передней части класса так, что его можно рассматривать в Objective-С классов. Также читаем руководство Apple по смешивать и сочетать между objective c и swift он говорит, что при импорте внешней платформы вам нужно убедиться, что параметр Defines Module build для импортируемой платформы установлен в Yes. Вы проверили с любым из этих вариантов?
Comments