Подтвердить что ты не робот

Obj-C CocoaPods + Swift Framework

Я создаю среду Swift в последнем Xcode 6 DP4. Мне нужно внутренне использовать AFNetworking в своих рамках, но не могу понять, как его скомпилировать.

Я знаю, как использовать заголовки мостов, но они не поддерживаются в структурах Swift.


Мои рамки, Core.framework, выглядят следующим образом:

> 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

И я использую podfile для привлечения AFNetworking. Однако при компиляции я получаю следующую ошибку:

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

из-за импорта AFNetworking. Но если я не включаю это, тогда я получаю ошибки компиляции везде, ссылаясь на AFNetworking.

Кто-нибудь понял правильную комбинацию?

4b9b3361

Ответ 1

Хорошо, основываясь на том, что я вижу здесь и здесь Я не думаю, что все еще можно скомпилировать из файла подкачки. Я попытался сделать это с помощью библиотеки SCLAlertView-Swift с аналогичными ошибками. Я думаю, вам просто нужно дождаться, когда код будет развиваться командой cocoapods.

Ответ 2

Итак, у меня что-то работает. Моя цель состояла в том, чтобы использовать общую структуру кода для нескольких целей с библиотеками cocoapod для поддержки в sharedCode. У меня были проблемы с немодульным заголовком и проблема с дублирующимися символами.

MainTarget -swift файлы

SharedCode -swift файлы -objc файлы -cocoapods lib

Добавьте "Run Script Phase" в начало цели "framework"

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"

В главном заголовке рамки поставьте

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

Voila, классы теперь доступны для вашего кода фреймворка и ваших зависимостей в структуре, если это необходимо. Это отображает все заголовки cocoapods, а копия Script не умна, поэтому вы можете столкнуться с проблемой пути. Пока все хорошо для меня. Это, безусловно, обход, поскольку немодульная статья заголовка блокирует компилятор.