我正在最新的Xcode 6 DP4中创建一个Swift框架。我需要在我的框架内部使用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的任何地方得到编译错误。
有没有人想出正确的组合?
答案 0 :(得分:3)
答案 1 :(得分:1)
所以我有一些工作。我的目标是使用cocoapod库在多个目标之间使用共享代码框架,以便在sharedCode中提供支持。我遇到的问题是非模块头问题和重复符号问题。
MainTarget -swift文件
SharedCode -swift文件 -objc文件 -cocoapods lib
添加&#39;运行脚本阶段&#39;在框架的顶部#39;目标
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标头,并且复制脚本不聪明,因此您可能会遇到路径问题。到目前为止对我这么好。这肯定是一种解决方法,因为非模块头事件阻塞了编译器。