答案 0 :(得分:78)
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_frameworks! Podfile中的指令仅与面向iOS> = 8的Xcode项目兼容。
答案 1 :(得分:72)
该过程似乎与Mix and Match文档的Using Swift with Cocoa and 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)
答案 2 :(得分:16)
UPDATE :CocoaPods 0.36稳定版已经发布。它正式支持Swift。
CocoaPods现在支持Swift最新的0.36版本。它仍然处于测试阶段,但确实有效。
首先,您需要在终端中运行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'
我也写了blog post。
答案 3 :(得分:2)
如果您在bridging-header.h中收到文件未找到错误,则可能需要确保在Build Scheme中链接了Pods库。
CocoaPods疑难解答部分介绍了如何在第4项here
项下执行此操作答案 4 :(得分:1)
现在你可以通过运行支持集成swift框架的sudo gem install cocoapods
来使用cocoapods 0.36.0版本。当你使用swift编写的框架时,你应该在Podfile中明确使用它:
platform :ios, '8.0'
use_frameworks!
pod 'Alamofire'
答案 5 :(得分:0)
在我的情况下,我发现我没有向主目标添加pod,而只是在Podfile中添加了Test和TestUI目标,如here所述。