我一直在尝试使用CocoaPods新框架设置来启用一些Pods,但是在我的Objective-C项目中使用Swift就遇到了问题。
首先要说明的是,这是CocoaPods预发布版本0.35,您可以在这里阅读有关如何使用和安装它的内容。
这是我的当前Podfile:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
pod 'MBProgressHUD'
pod 'SLPagingViewSwift'
MBProgressHUD是一种常见的旋转指示器,而SLPagingViewSwift是我在cocoapods搜索中输入Swift时发现的一个随机项目。以下是我的项目中的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
如何在纯Objective-C类中使用由CocoaPods创建的纯Swift框架?
故障排除
大多数时候,我一直在尝试各种导入。苹果建议在此处使用@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文件单独添加到项目中,它可以正常工作。
@import
,这是许多人从未或很少见到的,但它是新的、有用的和必要的。感谢您找出了这个方法。 - Dan Rosenstark