Xcode Swift pods安装 - 找不到导入文件

时间:2015-07-31 07:16:46

标签: ios xcode cocoapods

我正在使用Swift编写的Xcode项目。我正在使用两个广告连播,AFNetworkingBDBOAuth1Manager。它们都是Obj-C库,因此导入它们的简单桥接文件可以处理所有事情。

现在,当我尝试包含一个用Swift编写的第三个窗格SwiftyJSON时,问题就出现了。这是Podfile的样子:

platform :ios, "8.0"
use_frameworks!

pod "AFNetworking"
pod "BDBOAuth1Manager"
pod "SwiftyJSON"

link_with 'TwitterSearch', 'TwitterSearch Tests'

安装上述Podfile后,桥接标头停止工作,因为它现在无法找到我要导入的文件。

澄清一下,这是桥接头文件:

//
//  Use this file to import your target's public headers that you would like to expose to Swift.
//

#import "BDBOAuth1RequestOperationManager.h"

当Pod只是AFNetworkingBDBOAuth1Manager时,它可以用Obj-C编写。当包含用Swift编写的第三个pod SwiftyJSON时,它不起作用。

确切的错误消息是:

  • Swift编译错误:“BDBOAuth1RequestOperationManager.h”文件没有 结果
  • Swift编译器错误:无法导入桥接头
    路径到桥接报头

知道这可能是什么吗?

更新:我已经弄明白为什么它不起作用了。当我手动添加SwiftyJSON时,一切正常。整个问题都归结为这一行:use_frameworks! 我对框架并不熟悉,但实际上你必须做以下事情:

#import "path/BDBOAuth1RequestOperationManager.h"

instead of

#import "BDBOAuth1RequestOperationManager.h"

3 个答案:

答案 0 :(得分:4)

解决方法

<强> Podfile

platform :ios, "8.0"
use_frameworks!

target 'SwiftAndObjCPods' do
pod "SwiftyJSON"
end

target 'SwiftAndObjCPodsTests' do
pod "SwiftyJSON"
end

<强>项目:

拖动&amp;将当前版本的AFNetworkingBDBOAuth1Manager直接放入您的项目中。你可以在 Pods 组&gt;中找到它们。 Pods&gt;在Finder中显示,只需将它们移动到方便的临时位置。

<强>桥接-Header.h

#import "AFNetworking.h"
#import "BDBOAuth1RequestOperationManager.h"

快速使用

// No import
let a = BDBOAuth1RequestOperationManager(baseURL: baseURL, consumerKey: "consumer", consumerSecret: "secret")

经过测试:链接,构建,运行。

答案 1 :(得分:1)

无解决方法

<强> Podfile

platform :ios, "8.0"
use_frameworks!

target 'ObjCSwiftPods' do
pod "AFNetworking"
pod "BDBOAuth1Manager"
pod "SwiftyJSON"
end

target 'ObjCSwiftPodsTests' do
pod "AFNetworking"
pod "BDBOAuth1Manager"
pod "SwiftyJSON"
end

<强> -Bridging报头

#import "../Pods/AFNetworking/AFNetworking/AFNetworking.h"
#import "../Pods/BDBOAuth1Manager/BDBOAuth1Manager/BDBOAuth1RequestOperationManager.h"

关于Bridging-Header的注意事项:

{X}代替../ {full path to Pods}/莫名其妙地让我在那里。

快速调用

// necessary import
import SwiftyJSON

// test BDBOAuth1Manager
let url = NSURL(string: "http://ObjCSwiftPods.com")
let bdsm = BDBOAuth1RequestOperationManager(baseURL: url, consumerKey:"key", consumerSecret:"secret")

// test AFNetworking
let sec = AFSecurityPolicy()

// test SwiftyJSON
let json = JSON("{}")

答案 2 :(得分:0)

尝试将版本添加到podfile中,如此

pod 'SwiftyJSON', '~> 2.2.1'