2014-07-22 26 views
28

En yeni Xcode 6 DP4'te bir Swift çerçevesi oluşturuyorum. Çerçevemde AFNetworking'i dahili olarak kullanmam gerekiyor, ancak bunu derlemek için bir yol bulamıyor.Obj-C CocoaPods + Swift Framework

Köprü başlıklarını nasıl kullanacağımı biliyorum, ancak Swift çerçevelerinde desteklenmeyenler.

> 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 

Ve AFNetworking getirmek için bir podfile kullanıyorum:


Benim çerçeve, Core.framework, buna benzer. Çünkü AFNetworking ithalatının

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

: Ben derleme Ancak, aşağıdaki hatayı alıyorum. Ancak bunu eklemezsem, AFNetworking'i referans alan her yerde derleme hataları alıyorum.

Doğru kombinasyonu herkes anladı mı?

+0

Yapılandırma ayarını CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES veya 'Modül İçermeye İzin Verme Çerçeve Modülleri' Evet'i değiştirmeyi denediniz mi? Çerçeveler Yapılandırma Ayarları'nda 'modül' araması yapın. – dmpontifex

+1

Bu sorunu FMDB ile aynı anda yaşıyorum. Modüler olmayan başlıklara izin vermek de işe yaramıyor. –

+0

Başka bir bölmeyle aynı sorun burada. – paranoidroid

cevap

3

here ve here'u gördüğüme göre, henüz bir pod dosyasından herhangi bir şey derlemenin mümkün olduğunu sanmıyorum. Bunu benzer hatalarla SCLAlertView-Swift kütüphanesi ile yapmaya çalıştım. Bence kocoapod ekibi tarafından geliştirilecek kodu beklemeniz gerekecek.

1

Çalıştığım bir şey var. Amacım, sharedCode desteği için cocoapod kitaplıklarıyla birden çok hedefte paylaşılan kod çerçevesini kullanmaktı. Sahip olduğum sorunlar modüler olmayan başlık sorunu ve yinelenen semboller konusuydu.

MainTarget -swift dosyalar

-swift dosyaları -ObjC dosyalar

lib -cocoapods 'çerçeve' hedefin üstüne bir 'Run Script Aşama' ekle SharedCode

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" 
Ana başlığın ana başlığında
#import <{SHARED_FRAMEWORK_NAME}/PixateFreestyle.h> 
#import <{SHARED_FRAMEWORK_NAME}/Lockbox.h> 
#import <{SHARED_FRAMEWORK_NAME}/etc.h> 

Voila, sınıflar artık gerekirse çerçeve kodunuz ve çerçeve bağımlılarınız için kullanılabilir. Bu, tüm cocoapod'ların başlıklarını açığa çıkarır ve kopyalama betiği akıllı değildir, böylece bir yol sorununa dönüşebilirsiniz. Şimdiye kadar benim için çok iyi. Bu, modüler olmayan başlık nesnesi derleyiciyi engellediği için kesinlikle bir çalışma alanıdır.