Cách sử dụng Objective-C CocoaPods trong dự án Swift


83

Có cách nào tôi có thể sử dụng CocoaPod được viết bằng Objective-C trong dự án Swift của mình bằng cách sử dụng swift không?

Tôi chỉ tạo một tiêu đề bắc cầu? Và nếu vậy, tôi có thể truy cập các đối tượng, lớp và trường được xác định bởi các thư viện trong CocoaPod trong Swift không?

Câu trả lời:


169

Câu trả lời cơ bản cho câu hỏi của bạn là Có, bạn có thể sử dụng mã target-c được xây dựng bằng CocoaPods.

Câu hỏi quan trọng hơn là "Làm thế nào để sử dụng lib như vậy?"
Câu trả lời cho câu hỏi này phụ thuộc vào use_frameworks!cờ trong của bạn Podfile:
Hãy tưởng tượng rằng bạn muốn sử dụng Objective-C pod với tên CoolObjectiveCLib.

Nếu tệp nhóm của bạn sử dụng use_frameworks!cờ:

// Podfile
use_frameworks!
pod 'CoolObjectiveCLib'

Sau đó, bạn không cần thêm bất kỳ tệp tiêu đề cầu nối nào.
Mọi thứ bạn cần là import framework trong tệp nguồn Swift:

// MyClass.swift
import CoolObjectiveCLib

Bây giờ bạn có thể sử dụng tất cả các lớp được trình bày trong lib.

Nếu tệp nhóm của bạn không sử dụng use_frameworks!cờ:

// Podfile
pod 'CoolObjectiveCLib'

Sau đó, bạn cần tạo tệp tiêu đề bắc cầu và nhập vào đó tất cả các tiêu đề Objective-C cần thiết:

// MyApp-Bridging-Header
#import "CoolObjectiveCLib.h"

Bây giờ bạn có thể sử dụng tất cả các lớp được định nghĩa trong các tiêu đề đã nhập.


làm thế nào để truy cập các lớp nhanh từ bên trong các tệp .m pod (trong trường hợp tôi muốn tùy chỉnh các nhóm này)?
JAHelia

1
Tôi đã bỏ ghi chú use_frameworks trong podfile của dự án nhanh chóng của mình và muốn sử dụng Toast pod, thực sự là một loại mục tiêu-c. Chỉ cần viết import UIView + Toast đã cho tôi lỗi biên dịch: Các câu lệnh liên tiếp trên một dòng phải được phân tách bằng ';'
Chanchal Raj

@ChanchalRaj là UIView+Toasttên cho nhóm của bạn? Nếu không, hãy thử sử dụng khung nhập mà tên phù hợp với tên nhóm của bạn.
Vlad Papko

1
Tôi đã sử dụng cùng một mã để sử dụng mã objc để tải nhanh tệp nhưng nó khiến tôi gặp lỗi không có mô-đun nào như vậy "TÊN POD", Tôi có cần đặt bất kỳ cờ nào khác không
Prashant Tukadiya

4
Nếu bạn đang gặp sự cố với use_frameworks! , có thể là do các câu lệnh nhập không được viết theo đúng định dạng. ví dụ như nếu podFile chứa pod 'iOS-Echarts', sau đó nhập khẩu sẽ xảy ra như sau: Swift tập : import iOS_Echarts tập tin Objective-C :#import <iOS_Echarts/iOS-Echarts.h>
Kushal Ashok

2

Trong podFile, hãy sử dụng cờ use_frameworks! Bên trong Xcode trong Podcấu trúc thư mục trong phần phụ thuộc, bạn thêm xxxxxxx-umbrella.hvào Tệp hỗ trợ.

{PROJECT_NAME}-Bridging-Header.hSử dụng của bạn :

#import "xxxxxxx/xxxxxxx-umbrella.h"

Nó làm việc cho tôi.


0

Bạn chỉ cần một tiêu đề bắc cầu và nhập vào đó những gì bạn cần.


0

VÀ đừng quên thêm tên tệp Bridging Header vào Target -> Build Settings -> Objective-C Bridging Header

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.