Подтвердить что ты не робот

Как импортировать и использовать Swift Pod Framework в проекте Objective-C

Я пытаюсь проверить новую настройку платформы CocoaPods, чтобы получить некоторые Pods, и у меня возникли проблемы с использованием Swift в моем проекте Objective-C.

Прежде всего, это CocoaPods prerelease 0.35, вы можете прочитать о том, как его использовать и установить здесь.

Здесь мой текущий подфайл:

source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '8.0'

pod 'MBProgressHUD'
pod 'SLPagingViewSwift'

MBProgressHUD - общий индикатор поворота, а SLPagingViewSwift - это случайный проект, который я нашел, набрав Swift в поиске 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 Framework, созданную CocoaPods в классе Objective-C?

Устранение неполадок

В основном я пытался использовать различные импортные товары. Apple рекомендует стиль @import здесь

enter image description here

Но я пробовал несколько других разновидностей:

// Compiler Error
#import <SLPagingViewSwift/SLPagingViewSwift.h>

// Builds Fine -- Doesn't Work
#import <SLPagingViewSwift/SLPagingViewSwift-Swift.h>
#import "SLPagingViewSwift-Swift.h"

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

Я ничего не вижу в проблемах Cocoapods, которые могут это помочь, я также ничего не нашел в их блоге/релизе.

Примечание

Если я добавлю файл SLPagingViewSwift.swift отдельно к проекту старомодным способом, он отлично работает.

4b9b3361

Ответ 1

Я думаю, что вы должны объявить класс swift общедоступным, иначе он рассматривается как внутренний класс и может быть показан только в одном модуле, и это может быть причиной добавления его в тот же проект, что и файлы, но в качестве основы нет. Другая вещь, которая возникает для меня, заключается в том, что инфраструктуре может потребоваться добавить @objc перед объявлением класса, чтобы ее можно было увидеть в классах objective-c. Также, прочитав руководство Apple по Mix и Match между объектами c и swift, он говорит, что при импорте внешней фреймворк вам нужно убедиться, что параметр "Настройка модулей" для рамки для импорта youre установлено значение Yes. Вы проверили какие-либо из этих параметров?

Ответ 2

Jus использовать

@import SwiftModuleName;

Синтаксис и убедитесь, что функции, которые вы хотите использовать, являются общедоступными (и @objc)