如何在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 {
正如你所看到的,它从UIViewController
inheritance,所以分配它并初始化它不应该是一个问题。 如果我单独添加文件只是一个文件,上面的代码运行得很好。 我知道它的作品。
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。 你有检查任何这些选项?