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 ?
Câu trả lời:
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 MBProgressHUD và 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
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.
Thêm import MBProgressHUD
và / hoặc import Alamofire
ở đầu mỗi tệp Swift cần (các) lớp này.
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.
Đố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.
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 .
pod install
.Example-Bridging-Header.h
và thêm nó vào dự án.Objective-C Bridging Header
cho mục tiêu của bạn: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
#import <Reachability/Reachability.h>
thay thế #import "Reachability.h"
.
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.
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.
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 cocoapods
hỗ 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'