2016-11-14 23 views
5

Giả sử chúng tôi có 2 khung được viết bằng Swift: A.frameworkB.framework, A tùy thuộc vào B. Tôi muốn mọi dự án phụ thuộc vào A để có thể truy cập api của khung B mà không cần phải import B trong tệp nguồn dự án. Làm thế nào nó có thể đạt được?Swift: xuất API phụ thuộc

CHỈNH SỬA: Đặc biệt, tôi đang cố tình làm thế nào điều này có thể được thực hiện thông qua Cocoapods.

MỘT SỐ CHỈNH SỬA KHÁC: Tôi nghĩ sẽ hữu ích nếu tôi giải thích ngữ cảnh mà câu hỏi này phát sinh, bởi vì tôi vẫn chưa nhận được câu trả lời phù hợp mặc dù thời lượng và tiền thưởng.

Vì vậy, tôi có pod Freestyler (https://github.com/cayugasoft/Freestyler) tự nó phụ thuộc vào nhóm FreestylerCore (https://github.com/cayugasoft/FreestylerCore). Hoạt động tốt, nhưng tôi phải import FreestylerCore trong dự án ngay cả khi import Freestyler được thực hiện. Có vẻ hơi khó chịu đối với tôi, bởi vì tôi coi phụ thuộc này (Freestyler -> FreestylerCore) là chi tiết triển khai và tôi muốn nếu người dùng thư viện tự động làm việc này mà không nhập bất kỳ thứ gì khác ngoại trừ nhóm chính, Freestyler. Vì vậy, đó là lý do tại sao tôi hỏi câu hỏi này. Có cách nào để thực hiện điều này không?

+0

sửa tôi nếu sai, vì A phụ thuộc vào B và đã nhập B trong tệp nguồn A. Bây giờ bạn muốn có dự án P mà không phải nhập B trong tệp nguồn P? Có đúng không ? Nếu đó là trường hợp cuối cùng bạn muốn thêm B làm phụ thuộc cho A và chỉ thêm A làm phụ thuộc của P? –

+0

@PenkeySuresh: Về cơ bản tôi muốn một cái gì đó giống như ô tiêu đề trong Objective-C. Bạn nhập tiêu đề này và tất cả tiêu đề khác được nhập tự động và bạn không phải nhập chúng theo cách thủ công. Tôi tự hỏi nếu có cơ chế để thực hiện hành vi tương tự, nhưng trong Swift. –

+0

Tôi nghĩ rằng những gì bạn đang tìm kiếm là '@ _exported'. – HAS

Trả lời

0

Biến thành trong Swift, đây là hành vi mặc định.

Nếu Pod.A phụ thuộc vào Pod.B, thì dự án của bạn phụ thuộc vào Pod.A (thông qua việc bao gồm Pod.A trong Podfile của bạn) thực sự sẽ có khả năng hiển thị với Pod.B.

Để xem ví dụ về cách thiết lập Pod.Anh có phụ thuộc và sau đó là dự án Ví dụ tiêu thụ Pod.A (và cũng có khả năng hiển thị với Pod.B), hãy xem Trình diễn lặp lại GitHub công khai của tôi cho điều này:

https://github.com/ericwastaken/CocoaPod-Dependency-Demo

tôi thêm nhận xét vào Ví dụ ứng dụng (ViewController) cho thấy làm việc này. Repo có giải thích bổ sung.

+0

Cảm ơn bạn đã trả lời, @ericWasTaken. Thật không may, nó không phải là những gì tôi có ý nghĩa. Rõ ràng là bạn có thể sử dụng nhóm B trong dự án phụ thuộc vào nhóm A, * nếu bạn nhập nhóm B *, nhưng tôi đã hỏi cách đạt được điều này * mà không nhập nhóm B, chỉ nhập nhóm A *. Tôi đã xem ví dụ github của bạn - nếu dòng 'import StackO_Dependency_Demo' trong ViewController được nhận xét, mã sẽ không biên dịch. –

+0

Ứng dụng mẫu của tôi không bao giờ tham khảo Pod.B trong Podfile. Pod.B là nhóm React! Ví dụ của tôi chỉ tài liệu tham khảo Pod.A và tự động cung cấp cho bạn quyền truy cập vào Pod.B (pod phản ứng) mà đi qua Pod.A (StackO pod = Pod.A). Tất nhiên nếu bạn loại bỏ Pod.A nó sẽ không xây dựng. Đó là Pod chính được sử dụng trong bộ điều khiển chế độ xem.Trong mọi trường hợp, có lẽ bạn đang tìm kiếm một sự bao gồm tĩnh của logic Pod.B. Tất nhiên, bạn có thể đưa các lớp đó vào Pod.A của bạn và biên dịch với nhau thành một Pod đơn. Nhưng đó không phải là cách CocoaPod cuối cùng hoạt động cũng như nó là gì. – ericWasTaken

+0

Bây giờ, hãy xem xét câu hỏi của bạn, nếu bạn không muốn báo cáo nhập khẩu, thì bạn cần đưa mã/lớp logic Pod.B vào Pod.A. Có lẽ bạn có thể nĩa Pod.B và sau đó thêm logic của riêng bạn vào nó. Ít nhất theo cách này bạn có thể hợp nhất các thay đổi vào ngã ba của bạn trong tương lai. – ericWasTaken

Các vấn đề liên quan