当Apple推出他们的新编程语言Swift时,我想知道如何将其与可通过CocoaPods获得的现有Objective-C库集成?
Answers:
Cocoapods 0.36及更高版本引入了该use_frameworks!
指令,该指令意味着在Swift中导入Objective-C Pod不需要桥接头。
请在下面找到使用MBProgressHUD和Alamofire的完整示例:
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
从桥接头中删除#imports,如果不需要,甚至删除桥接头文件。如果选择后者,请不要忘记在Xcode项目配置中删除路径(到此已删除的桥接头文件)。
在每个需要这些类的Swift文件的顶部添加import MBProgressHUD
和/或import Alamofire
在其顶部。
您现在使用的是真正的框架,因此您的枚举已在进行中!您可能会有一行Swift,可以使用桥接头,如下所示:
progressHUD.mode = MBProgressHUDModeIndeterminate
现在必须变成这样:
progressHUD.mode = MBProgressHUDMode.Indeterminate
没什么大不了的,但是大量的错误可能使您误入歧途,即与使用很多Objective-C枚举相比,您遇到的问题更大。
(此答案的来源)
供您参考:我想(您必须自己进行测试以确保)use_frame正常!Podfile中的指令仅与面向iOS> = 8的Xcode项目兼容。
看来该过程与“将Swift与Cocoa和Objective-C文档一起使用”的“混合和匹配”部分中描述的过程相似。
pod install
。Example-Bridging-Header.h
并将其添加到项目中。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)
更多信息:将Cocoapods与Swift项目集成
#import <Reachability/Reachability.h>
而不是#import "Reachability.h"
。
更新:CocoaPods 0.36稳定版已发布。它正式支持Swift。
CocoaPods现在在其最新的0.36版本中支持Swift。它仍处于测试阶段,但可以运行。
首先,您需要通过在终端中运行CocoaPods beta(当前为beta 2)来安装它。
sudo gem install cocoapods --pre
就是这样。您可以像平常一样添加Swift库。
但是,如果您想通过CocoaPods将用Objective-C编写的库添加到Swift项目中,就会遇到麻烦。您需要将该行添加use_frameworks!
到Podfile中。这是一个例子。
use_frameworks!
platform :ios, '8.0'
pod 'MagicalRecord'
我也为此写了一篇博客文章。
use_frameworks!
仅适用于iOS> = 8对吗?如果是这样,您应该在答案中写下来。