2014-12-15 25 views
7

Tôi có một yêu cầu để tạo một khuôn khổ cho một bộ tiện ích chung được chia sẻ mà chúng tôi dự định sử dụng trong nhiều dự án iOS trong tổ chức của chúng tôi. Các lớp tiện ích được viết nhanh chóng và khung công tác cần hỗ trợ các dự án trong iOS 7 trở lên. Tôi đang sử dụng Xcode 6.1.1.Làm thế nào để tạo một khuôn khổ cho một dự án nhanh chóng với hỗ trợ iOS 7+?

Tôi đã thử tạo cả 'Cocoa Touch Framework' và 'Cocoa Touch Static Library' và dường như không làm cho nó hoạt động cho iOS 7.

Với 'Cocoa Touch Framework', tôi nhận được cảnh báo rằng 'dylibs nhúng/khung chỉ chạy trên iOS 8 trở lên' và mặc dù tôi có thể chạy, lỗi trong bước iTunesconnect với lỗi của dự án mục tiêu triển khai không được nhỏ hơn 8.0 (của tôi là 7.0).

Tôi đã thử với 'Cocoa Touch Static Library' cũng như sử dụng các bước được đưa ra trong http://www.raywenderlich.com/65964/create-a-framework-for-ios, nhưng nó không xây dựng với các tệp nhanh. Khi tôi loại bỏ tất cả các tập tin nhanh chóng và thêm các tập tin Obj-C, nó hoạt động đúng.

Bất kỳ trợ giúp nào được đánh giá cao. Làm cách nào để tạo khung cho một dự án nhanh với hỗ trợ iOS 7+?

Cảm ơn

Trả lời

8

Thật không may, bạn không thể. Đó là một trong những yếu tố đáng thất vọng hơn về Swift.

Như được hiển thị trong documentation, bạn không thể tạo khung/thư viện tĩnh với thư viện nhanh và năng động chỉ được hỗ trợ trong iOS 8+.

Tùy chọn duy nhất tôi khuyên bạn nên xây dựng khung tĩnh Objective-C cho iOS 7 và sau đó bắt đầu sử dụng nhanh khi bạn muốn thả hỗ trợ iOS 7. Nó không phải là tình huống lý tưởng nhất, nhưng bởi vì bạn có thể có mixed languages trong một khung động, nó có nghĩa là bạn sẽ không phải lãng phí thời gian viết lại mã (trừ khi, tất nhiên, bạn muốn).

+0

bạn có thể chỉ ra vị trí trong tài liệu không thể sử dụng Swift để tạo khung làm việc thấp hơn iOS 8 không? Tôi tự tin trong câu trả lời của bạn, nhưng tôi cần một cái gì đó chính thức để đưa đến một khách hàng. –

6

Apple không hỗ trợ khung công tác Swift thuần túy trước iOS 8 có phần làm giảm tỷ lệ chấp nhận Swift.

Tôi không ủng hộ giải pháp sau đây là phương pháp hay nhất. Thành thật mà nói, đó là một hack rất thiếu sót. Chúng tôi có một khuôn khổ Swift thuần túy lớn, thực hiện hầu hết việc nâng hạng nặng cho những thứ ở đây tại nơi làm việc. Và, chúng tôi cần khung đó trong một sản phẩm chạy trên iOS 7.1 trở lên.

Đây là cấu trúc phân cấp thư mục - hack là quan trọng. Trong một tình huống lý tưởng, dự án và khuôn khổ là anh chị em trong cây thư mục. Tạo một nhóm trong dự án. Trong Finder, shift/command chọn tất cả các tệp nguồn từ khung công tác và thả chúng vào nhóm mới được tạo. Đảm bảo không sao chép các tệp. Xcode nói của bạn chỉ cần thêm các tệp vào tệp dự án, tạo liên kết đường dẫn tương đối với chúng.

Framework bây giờ sẽ biên dịch trực tiếp vào dự án của bạn. Tôi không thể nhấn mạnh đủ giải pháp này mong manh đến mức nào. Khi các tệp được thêm vào khung của bạn, chúng cũng phải được thêm/liên kết vào bất kỳ dự án nào mà bạn đã "nhúng liên kết" vào khung công tác.

"Giải pháp" này chỉ nên được sử dụng làm phương sách cuối cùng. Phải lặp lại khuôn khổ chẵn lẻ trên nhiều dự án là câm. Nếu thời gian trôi qua với dự án ở trạng thái tĩnh và khung công tác phát triển, hãy đóng khung trong dự án và thêm lại. Mất ít hơn một phút để đổ/thêm lại khung làm việc và giảm nguy cơ lỗi.

Apple, hãy giúp chúng tôi để chúng tôi có thể duy trì các phương pháp hay nhất.Tôi xấu hổ khi chia sẻ giải pháp này, vì nó chỉ là một cách khủng khiếp để có được thứ gì đó mà Apple không hỗ trợ.

+2

đôi khi bạn phải làm những gì bạn phải làm – jamylak

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