簡體   English   中英

如何將 Cocoapods 與 Swift 項目集成?

[英]How to integrate Cocoapods with a Swift project?

當 Apple 推出他們的新編程語言Swift 時,我想知道如何將它與通過CocoaPods提供的現有 Objective-C 庫集成

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

2. 刪除

從橋接頭中刪除#imports,如果不需要,甚至可以刪除橋接頭文件。 如果您選擇后一種可能性,請不要忘記刪除 Xcode 項目配置中的路徑(到這個已刪除的橋接頭文件)。

3. 添加導入

在需要這些類的每個 Swift 文件的頂部添加import MBProgressHUD和/或import Alamofire

4. 必要時修復枚舉

您現在正在使用真正的框架,因此您的枚舉已在飛行中移動! 您可能有一行 Swift 可以很好地處理橋接頭,如下所示:

progressHUD.mode = MBProgressHUDModeIndeterminate

現在必須變成這樣:

progressHUD.mode = MBProgressHUDMode.Indeterminate

沒什么大不了的,但是一堆錯誤可能會讓你誤入歧途,如果你使用大量的 Objective-C 枚舉,你會遇到比你更大的問題。

這個答案的來源

供您參考:我猜(您必須自己測試以確保) use_frameworks! Podfile 中的指令僅與針對 iOS >= 8 的 Xcode 項目兼容。

該過程似乎類似於在使用 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)

更多信息: 將 Cocoapods 與 Swift 項目集成

更新: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'

我也寫了一篇關於這個的博客文章

如果您在 bridging-header.h 中遇到文件未找到錯誤,您可能需要確保您的 Pods 庫已鏈接到您的構建方案中。

CocoaPods 故障排除部分描述了如何在此處的第 4 項下執行此操作

現在您可以通過運行支持集成 swift 框架的sudo gem install cocoapods來使用 cocoapods 0.36.0 版本。 當你使用 swift 編寫的框架時,你應該在 Podfile 中顯式使用它:

platform :ios, '8.0'
use_frameworks!
pod 'Alamofire'

就我而言,我發現我沒有將 pod 添加到主要目標,而是僅添加到 Podfile 中的 Test 和 TestUI 目標,如here所述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM