2014-07-22 18 views
28

Tôi đang tạo một khung công tác Swift trong Xcode 6 DP4 mới nhất. Tôi cần phải sử dụng nội bộ AFNetworking trong khuôn khổ của tôi, nhưng không thể tìm ra cách để biên dịch nó.Obj-C CocoaPods + Swift Framework

Tôi biết cách sử dụng tiêu đề bắc cầu, nhưng không được hỗ trợ trong khung công tác Swift.


khuôn khổ của tôi, Core.framework, trông như thế này:

> Core.h 
    #import <UIKit/UIKit.h> 
    #import <AFNetworking/AFNetworking.h> 

    //! Project version number for Core. 
    FOUNDATION_EXPORT double CoreVersionNumber; 

    //! Project version string for Core. 
    FOUNDATION_EXPORT const unsigned char CoreVersionString[]; 

> SomeFileThatNeedsAFNetworking.swift 

Và tôi đang sử dụng một podfile để mang lại AFNetworking. Tuy nhiên, khi tôi biên dịch, tôi nhận được lỗi sau:

<unknown>:0: error: ~/Core/Source/Core.h:2: include of non-modular header inside framework module 'Core' 

vì việc nhập khẩu AFNetworking. Nhưng nếu tôi không bao gồm, sau đó tôi nhận được lỗi biên dịch ở khắp mọi nơi tham chiếu AFNetworking.

Có ai đã tìm ra kết hợp phù hợp không?

+0

Bạn đã thử thay đổi cài đặt xây dựng CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES hoặc 'Cho phép mô-đun không bao gồm mô-đun trong Mô-đun khung' thành Có? Chỉ cần tìm kiếm 'module' trong Frameworks Build Settings để tìm nó – dmpontifex

+1

Tôi đang gặp vấn đề tương tự với FMDB. Việc cho phép các tiêu đề không mô-đun cũng không hoạt động. –

+0

Vấn đề tương tự ở đây với một nhóm khác. – paranoidroid

Trả lời

3

Vâng, dựa trên những gì tôi thấy herehere Tôi không nghĩ rằng có thể biên dịch bất kỳ thứ gì từ tệp pod. Tôi đã cố gắng làm điều này với thư viện SCLAlertView-Swift với các lỗi tương tự. Tôi nghĩ bạn sẽ phải đợi mã để được nhóm cocoapods phát triển.

1

Vì vậy, tôi có điều gì đó hiệu quả. Mục tiêu của tôi là sử dụng một khung mã chia sẻ trên nhiều mục tiêu với các thư viện cocoapod để hỗ trợ trong sharedCode. Vấn đề tôi gặp phải là vấn đề tiêu đề phi mô-đun và vấn đề ký hiệu trùng lặp.

MainTarget file -swift

SharedCode file -swift file -ObjC -cocoapods lib

Thêm một 'Run Script Giai đoạn' để phía trên cùng của mục tiêu 'khuôn khổ'

set -e 

RESOURCES_TO_COPY=${PODS_ROOT}/headers-to-copy-${TARGETNAME}.txt 
> "$RESOURCES_TO_COPY" 

ls -d -1 ${PODS_ROOT}/Headers/Public/**/*.h >> "$RESOURCES_TO_COPY" 

rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY"/"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Headers" 

rm -f "$RESOURCES_TO_COPY" 

Trong tiêu đề khung chính đặt

#import <{SHARED_FRAMEWORK_NAME}/PixateFreestyle.h> 
#import <{SHARED_FRAMEWORK_NAME}/Lockbox.h> 
#import <{SHARED_FRAMEWORK_NAME}/etc.h> 

Thì đấy, các lớp học hiện có sẵn cho mã khung công tác của bạn và phụ thuộc khung của bạn nếu cần. Điều này không hiển thị tất cả các tiêu đề cocoapods và tập lệnh sao chép không thông minh để bạn có thể gặp sự cố đường dẫn. Cho đến nay rất tốt cho tôi. Điều này chắc chắn là một công việc xung quanh kể từ khi điều đầu không mô-đun khối trình biên dịch.

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