我正在使用Swift编写的Xcode项目。我正在使用两个广告连播,AFNetworking
和BDBOAuth1Manager
。它们都是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只是AFNetworking
和BDBOAuth1Manager
时,它可以用Obj-C编写。当包含用Swift编写的第三个pod SwiftyJSON
时,它不起作用。
确切的错误消息是:
知道这可能是什么吗?
更新:我已经弄明白为什么它不起作用了。当我手动添加SwiftyJSON时,一切正常。整个问题都归结为这一行:use_frameworks!
我对框架并不熟悉,但实际上你必须做以下事情:
#import "path/BDBOAuth1RequestOperationManager.h"
instead of
#import "BDBOAuth1RequestOperationManager.h"
答案 0 :(得分:4)
<强> Podfile 强>:
platform :ios, "8.0"
use_frameworks!
target 'SwiftAndObjCPods' do
pod "SwiftyJSON"
end
target 'SwiftAndObjCPodsTests' do
pod "SwiftyJSON"
end
<强>项目:强>
拖动&amp;将当前版本的AFNetworking
和BDBOAuth1Manager
直接放入您的项目中。你可以在 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'