【问题标题】:Xcode Swift pods installation - import file not foundXcode Swift pods 安装 - 找不到导入文件
【发布时间】:2015-10-22 18:47:53
【问题描述】:

我正在开发一个用 Swift 编写的 Xcode 项目。我正在使用两个 pod,AFNetworkingBDBOAuth1Manager。它们都是 Obj-C 库,因此只需一个简单的桥接文件即可导入它们。

现在,当我尝试包含用 Swift 编写的第三个 pod 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"

【问题讨论】:

  • Path 是导入文件的路径,对应于导入文件,如果有意义的话。抱歉,我是 StackOverflow 的新手。

标签: ios xcode cocoapods


【解决方案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-Header

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

关于桥接头的注意事项:

当 Xcode 采取行动时,将 ../ 替换为 {full path to Pods}/ 莫名其妙地把我带到了那里。

Swift 调用

// 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】:

    解决方法

    Podfile

    platform :ios, "8.0"
    use_frameworks!
    
    target 'SwiftAndObjCPods' do
    pod "SwiftyJSON"
    end
    
    target 'SwiftAndObjCPodsTests' do
    pod "SwiftyJSON"
    end
    

    项目:

    AFNetworkingBDBOAuth1Manager 的当前版本直接拖放到您的项目中。您可以通过在 Pods 组 > Pods > Show in Finder 中找到它们,然后将它们移动到方便的临时位置。

    Bridging-Header.h

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

    Swift 用法

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

    已测试:链接、构建、运行。

    【讨论】:

      【解决方案3】:

      尝试像这样向 podfile 添加版本

      pod 'SwiftyJSON', '~> 2.2.1'
      

      【讨论】:

      • 你的 cocoapods 版本和部署目标是什么?
      • Cocoapods 版本为 0.38.2。不确定部署目标是什么意思。
      • 部署目标是您的应用所针对的最低 iOS 版本。
      • 哦。那将是 8.0。
      • 好吧,那么它似乎与可可豆荚有关,因为满足 SwiftyJSON 的最小条件。修补程序是将 .swift 文件手动添加到项目中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-25
      • 1970-01-01
      • 2018-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多