如何在Objective-C项目中导入和使用Swift Pod框架

我一直在试图检查CocoaPods新的框架设置来得到一些豆荚,我在我的Objective-C项目中使用Swift的时候遇到了麻烦。

首先,这是CocoaPods预发行0.35,你可以阅读如何使用和安装在这里 。

这是我目前的Podfile:

source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' pod 'MBProgressHUD' pod 'SLPagingViewSwift' 

MBProgressHUD是一个常见的旋转指标,SLPagingViewSwift是一个随机项目,我通过在cocoapodssearch中inputSwift来find。 这里是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 { 

正如你所看到的,它从UIViewControllerinheritance,所以分配它并初始化它不应该是一个问题。 如果我单独添加文件只是一个文件,上面的代码运行得很好。 我知道它的作品。

TL;博士

我如何在一个纯粹的Objective-C类中使用由CocoaPods创build的纯Swift框架?

故障排除

大多数我一直在尝试各种import。 苹果在这里推荐@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文件单独添加到项目中,它就可以正常工作。

我认为你必须将swift类声明为public,否则将被视为内部类,只能在同一个模块中看到,这可能是将其添加到与文件相同的项目中的原因,一个框架没有。 其他的事情发生在我身上的是,框架可能需要在类声明前添加@objc,以便它可以在objective-c类中看到。 同时阅读苹果的目标c和swift之间的混合和匹配指南,它说,当你导入一个外部框架时,你需要确保你正在导入的框架的Defines Module构build设置被设置为Yes。 你有检查任何这些选项?