Làm thế nào để tích hợp Cocoapods với một dự án Swift?


84

Khi Apple giới thiệu Swift , ngôn ngữ lập trình mới của họ, tôi tự hỏi làm thế nào bạn có thể tích hợp nó với các thư viện Objective-C hiện có thông qua CocoaPods ?


Bạn cũng có thể đọc bài viết gần đây của tôi về cách thiết lập CocoaPods với dự án Swift của bạn.
Hemang

Câu trả lời:


78

Cocoapods 0.36 trở lên giới thiệu use_frameworks!hướng dẫn ngụ ý rằng tiêu đề bắc cầu không bắt buộc để nhập nhóm Objective-C trong Swift.

Vui lòng tìm ví dụ đầy đủ dưới đây bằng 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. Xóa

Xóa #imports khỏi tiêu đề bắc cầu của bạn hoặc thậm chí xóa tệp tiêu đề bắc cầu nếu bạn không cần. Nếu bạn chọn khả năng thứ hai, đừng quên xóa đường dẫn (đến tệp tiêu đề bắc cầu đã xóa này) trong cấu hình dự án Xcode của bạn.

3. Thêm nhập khẩu

Thêm import MBProgressHUDvà / hoặc import Alamofireở đầu mỗi tệp Swift cần (các) lớp này.

4. Sửa lỗi enums nếu cần

Bây giờ bạn đang sử dụng các khung công tác chân thực, vì vậy enums của bạn đã chuyển động! Bạn có thể có một dòng Swift phù hợp với tiêu đề bắc cầu như thế này:

progressHUD.mode = MBProgressHUDModeIndeterminate

Điều đó bây giờ phải trở thành thế này:

progressHUD.mode = MBProgressHUDMode.Indeterminate

Không phải là vấn đề lớn, nhưng hàng đống lỗi có thể khiến bạn lạc lối rằng bạn gặp phải vấn đề lớn hơn bạn đang làm nếu bạn đang sử dụng nhiều Objective-C enums.

( Nguồn của câu trả lời này )

Đối với thông tin của bạn: Tôi đoán (bạn sẽ phải tự mình kiểm tra để chắc chắn) rằng use_frameworks! hướng dẫn trong Podfile của bạn chỉ tương thích với các dự án Xcode nhắm mục tiêu iOS> = 8.


73

Có vẻ như quy trình này tương tự như quy trình được mô tả trong phần Mix and Match của tài liệu Sử dụng Swift với Cocoa và Objective-C .

  1. Tạo Podfile của bạn và chạy pod install.
  2. Tạo tệp tiêu đề Objective-C mới Example-Bridging-Header.hvà thêm nó vào dự án.
  3. Thêm câu lệnh nhập vào tiêu đề cầu nối .
  4. Đặt Objective-C Bridging Headercho mục tiêu của bạn:

nhập mô tả hình ảnh ở đây

Bây giờ bạn có thể sử dụng thư viện của mình, trong trường hợp đó là MKUnits, trong tệp Swift của bạn:

let kilograms = NSNumber.mass_kilogram(2)()
let pounds = NSNumber.mass_pound(10)()
let result = kilograms.add(pounds)
println(result)

Xem thêm tại đây: Tích hợp Cocoapods với một dự án Swift


3
Đối với tôi, câu lệnh nhập cần bao gồm dir dự án, hay còn gọi là #import <Reachability/Reachability.h>thay thế #import "Reachability.h".
Kyle Clegg

Chỉ là một bản cập nhật. Swift POD, tức là: Swift Libs cũng sẽ sớm được CocoaPods hỗ trợ. Phiên bản tiếp theo 0.36 sẽ hỗ trợ Swift đầy đủ trong CocoaPods. Hầu hết các tính năng đã được hoàn tất và bạn có thể kiểm tra Lái Swift Pods ngay bây giờ sử dụng các hướng dẫn từ tôi blog bài
Sachin Palewar

2
Cocoapods 0.36 trở lên giới thiệu use_frameworks! hướng dẫn ngụ ý rằng tiêu đề bắc cầu không còn cần thiết để nhập các nhóm Objective-C trong Swift (vui lòng xem câu trả lời của tôi bên dưới).
King-Wizard

5
Ngoài những điều trên, tôi thấy rằng tôi phải thêm "Pods / **" vào "Đường dẫn tìm kiếm tiêu đề người dùng" của mình trong Cài đặt bản dựng. Tôi cũng phải thêm "#import <Foundation / Foundation.h>" vào tệp cầu nối.
Swifty McSwifterton

1
Cảm ơn Swifty. Tôi đã thử use_frameworks! nhưng nó không làm việc cho tôi. Thêm "Pods / **" vào đường dẫn tìm kiếm của người dùng đã hoạt động.
user3246173

16

CẬP NHẬT : Phiên bản ổn định CocoaPods 0.36 đã được phát hành. Nó chính thức hỗ trợ Swift.


CocoaPods hiện hỗ trợ Swift trong bản phát hành 0.36 mới nhất của họ. Nó vẫn đang trong giai đoạn thử nghiệm nhưng nó hoạt động.

Trước tiên, bạn cần cài đặt bản beta CocoaPods (hiện là bản beta 2) bằng cách chạy bản này trong Thiết bị đầu cuối của bạn.

sudo gem install cocoapods --pre

Nó khá là nhiều. Bạn có thể thêm thư viện Swift như cách bạn làm bình thường.

Nhưng có một cơ hội nếu bạn muốn thêm thư viện được viết bằng Objective-C vào một dự án Swift thông qua CocoaPods. Bạn cần thêm dòng use_frameworks!vào Podfile của mình. Đây là một ví dụ.

use_frameworks!
platform :ios, '8.0'

pod 'MagicalRecord'

Tôi cũng đã viết một bài đăng trên blog về điều này.


3
use_frameworks!chỉ dành cho iOS> = 8 phải không? Nếu vậy bạn nên viết điều này trong câu trả lời của bạn.
confile

2

Nếu bạn gặp lỗi không tìm thấy tệp trong Bridging-header.h, bạn có thể muốn đảm bảo rằng thư viện Pods của bạn đang được liên kết trong Sơ đồ xây dựng của bạn.

Phần khắc phục sự cố CocoaPods mô tả cách thực hiện việc này trong mục số 4 tại đây


1

Bây giờ bạn có thể sử dụng phiên bản cocoapods 0.36.0 bằng cách chạy sudo gem install cocoapodshỗ trợ tích hợp các khung công tác nhanh. Khi bạn sử dụng một khuôn khổ được viết bởi swift, bạn nên sử dụng nó một cách rõ ràng trong Podfile:

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

0

Trong trường hợp của tôi, tôi thấy rằng tôi không thêm nhóm vào mục tiêu chính mà chỉ thêm các mục tiêu Kiểm tra và TestUI trong Podfile như được giải thích ở đây .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.