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

洛根(Logan):

我一直在尝试检出CocoaPods新框架设置以使某些Pod运行起来,但是在我的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以老式方式文件单独添加到项目中,则效果很好。

卡洛斯·康潘(Carlos Compean):

我认为您必须将swift类声明为公共类,否则它将被视为内部类,并且只能在同一模块中看到,这可能是为什么将其添加到文件中的相同项目中的原因,但是框架没有。我想到的另一件事是,框架可能需要在类声明的前面添加@objc,以便可以在Objective-C类中看到它。还阅读了Apple关于目标c和swift之间混合匹配的指南,它说,当您导入外部框架时,需要确保要导入的框架的Defines Module build设置设置为Yes。您是否检查过其中任何一个?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Swift项目中使用Objective-C CocoaPods

将Swift框架导入Objective-C项目

如何在Swift框架中导入私有框架标头?

如何在Xcode项目中将Font Awesome与Objective-C或Swift集成并使用?

如何在iOS Swift中导入opencv2框架

在Swift项目中导入GoogleCast框架时没有此类模块错误

如何在框架中使用Swift扩展Objective-C类?

如何在同一框架内的Objective-C中访问内部Swift类?

将Objective-c框架导入Swift框架项目

如何将包含Pod的框架添加到另一个项目中

Swift通用框架取决于pod

如何在我的Swift项目中使用Objective-C项目

如何组织依赖于Pod的框架项目?

iOS Swift框架:如何将Objective C代码正确导入swift框架?

如何在Swift项目中使用目标C框架类?

如何在框架的Objective-C文件中使用Swift类?

如何在Objective-C中导入Metal?

如何在Ionic / Angular项目中导入和使用GSAP?

在Xamarin iOS项目中使用Swift框架内的Objective C框架

如何在vuejs项目中导入和使用luxon?

Pod可以访问主项目中的框架吗?

在Xcode Swift项目中使用Objective C框架

如何在Swift项目中导入LinkedIn SDK?

如何在Swift项目中导入目标C头文件

如何在核心图框架Objective-C中创建甜甜圈图?

如果类没有以@objc为前缀,是否可以在Objective-C项目中使用用Swift编写的pod?

如何与框架项目 swift 共享父(宿主)项目 pod?

在 Swift 中导入 Objective-c 框架?

在 cocoaouch 框架项目中添加 awss3 pod