如何将Cocoapods与Swift项目集成?

Mic*_* K. 84 xcode objective-c ios cocoapods swift

当Apple介绍他们的新编程语言Swift时,我想知道如何将它与可通过CocoaPods提供的现有Objective-C库集成

Kin*_*ard 78

Cocoapods 0.36及以上版本引入了use_frameworks!一条指令,暗示在Swift中导入Objective-C pod不需要桥接头.

请在下面找到使用MBProgressHUDAlamofire的完整示例:

1. Podfile

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.3'
use_frameworks!

pod 'Alamofire', '>= 1.2.2' # Swift pod
pod 'MBProgressHUD', '>= 0.9.1' # Objective-C pod
Run Code Online (Sandbox Code Playgroud)

2.删除

从桥接头中删除#imports,如果不需要,甚至删除桥接头文件.如果选择后一种可能性,请不要忘记删除Xcode项目配置中的路径(到此已删除的桥接头文件).

3.添加进口

添加import MBProgressHUD和/或import Alamofire在每个需要这些类的Swift文件的顶部.

4.必要时修复枚举

你现在正在使用真正的框架,所以你的枚举已经移动了!你可能有一行Swift这样的桥接头像这样:

progressHUD.mode = MBProgressHUDModeIndeterminate
Run Code Online (Sandbox Code Playgroud)

现在必须成为这样:

progressHUD.mode = MBProgressHUDMode.Indeterminate
Run Code Online (Sandbox Code Playgroud)

这并不是什么大不了的事,但是如果你使用了大量的Objective-C枚举,一堆错误可能会让你误入歧途,说你遇到的问题比你做的更大.

(这个答案的来源)

供您参考:我猜(您必须自己测试以确定)use_frameworks!Podfile中的指令仅与面向iOS> = 8的Xcode项目兼容.


Mic*_* K. 72

似乎该过程类似于使用Swift与Cocoa和Objective-C文档的混合和匹配部分中描述的过程.

  1. 创建Podfile并运行pod install.
  2. 创建一个新的Objective-C头文件,Example-Bridging-Header.h并将其添加到项目中.
  3. 将import语句添加到桥接头.
  4. Objective-C Bridging Header为您的目标设置:

在此输入图像描述

现在,您可以在Swift文件中使用库,在这种情况下,使用MKUnits:

let kilograms = NSNumber.mass_kilogram(2)()
let pounds = NSNumber.mass_pound(10)()
let result = kilograms.add(pounds)
println(result)
Run Code Online (Sandbox Code Playgroud)

更多信息:将Cocoapods与Swift项目集成

  • 除了上述内容之外,我发现我必须在Build Settings中的"User Header Search Paths"中添加"Pods/**".我还必须在桥文件中添加"#import <Foundation/Foundation.h>". (5认同)
  • 对我来说,import语句需要包含项目目录,即#import <Reachability/Reachability.h>`而不是`#import"Reachability.h"`. (3认同)
  • Cocoapods 0.36及以上介绍了use_frameworks!这意味着不再需要桥接头来导入Swift中的Objective-C pod(请参阅下面的答案). (2认同)

Isu*_*uru 16

更新:CocoaPods 0.36稳定版已经发布.它正式支持Swift.


CocoaPods现在支持Swift最新的0.36版本.它仍然处于测试阶段,但确实有效.

首先,您需要在终端中运行CocoaPods beta(目前为beta 2).

sudo gem install cocoapods --pre
Run Code Online (Sandbox Code Playgroud)

这就是它.您可以像平常一样添加Swift库.

但是如果你想通过CocoaPods将一个用Objective-C编写的库添加到Swift项目中,那就有了一个问题.您需要将该行添加use_frameworks!到Podfile中.这是一个例子.

use_frameworks!
platform :ios, '8.0'

pod 'MagicalRecord'
Run Code Online (Sandbox Code Playgroud)

我也写了一篇关于此的博客文章.

  • ``use_frameworks!``仅适用于iOS> = 8对吗?如果是这样,你应该在你的答案中写下这个. (3认同)