【问题标题】:How to Integrate Swift CocoaPods with a bridging header file如何将 Swift CocoaPods 与桥接头文件集成
【发布时间】:2017-04-06 15:23:12
【问题描述】:

我最近开始做 iOS,我正在尝试将 Vitamio Objective-C 库与我的 Swift 项目集成。我使用 CocoaPods 导入各种 swift 库。 Vitamio 与桥接头文件集成。

桥接头文件

#ifndef inclub_Bridging_Header_h
#define inclub_Bridging_Header_h

#import <Foundation/Foundation.h>
#import "VDefines.h"
#import "VPlayerManageDef.h"
#import "VMediaPlayer.h"
#import "VMediaPlayerDelegate.h"
#import "VMediaExtracterDef.h"
#import "VMediaExtracter.h"

#endif /* inclub_Bridging_Header_h */

Pod 文件:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!

target 'inclub' do
    pod "Player", "~> 0.2.0"
    pod 'Alamofire', '~> 4.0'
    pod 'Kingfisher', '~> 3.0'
    pod 'ObjectMapper', '~> 2.2'
    pod 'UIImageViewAlignedSwift'
    post_install do |installer|
        installer.pods_project.targets.each do |target|
            target.build_configurations.each do |config|
                config.build_settings['SWIFT_VERSION'] = '3.0'
            end
        end
    end
end

示例 Swift 文件

import Alamofire
import Foundation

class BackEnd {
    typealias JsonResponseHandler = (_ response: DataResponse<String>) -> Void
    typealias ErrorHandler = (_ error: Error) -> Void

    let defaultSession = URLSession(configuration: URLSessionConfiguration.default)
    var dataTask: URLSessionDataTask?


    static func tabletLogIn(user: String, password: String, responseHandler: @escaping JsonResponseHandler,  errorHandler: @escaping ErrorHandler) {
        let url = UrlFactory.getLogInUrl(user: user, pass: password)
        print("Calling URL: " + url);

        makeRequest(urlString: url, method: .post, responseHandler: responseHandler, errorHandler: errorHandler)
    }

    static func getAdOrderInfo(orderId: String, responseHandler: @escaping JsonResponseHandler,  errorHandler: @escaping ErrorHandler) {
        let url = UrlFactory.getAdOrderInfoUrl(orderId: orderId)
        print("Calling URL: " + url);

        makeRequest(urlString: url, method: .post, responseHandler: responseHandler, errorHandler: errorHandler)
    }

    static func getDetailedMusicChannels(responseHandler: @escaping JsonResponseHandler,  errorHandler: @escaping ErrorHandler) {
        let url = UrlFactory.getMusicChannelUrl()
        print("Calling URL: " + url);

        makeRequest(urlString: url, method: .post, responseHandler: responseHandler, errorHandler: errorHandler)
    }

    static func getTvChannels(responseHandler: @escaping JsonResponseHandler,  errorHandler: @escaping ErrorHandler) {
        let url = UrlFactory.getTvChannelUrl()
        print("Calling URL: " + url);

        makeRequest(urlString: url, method: .post, responseHandler: responseHandler, errorHandler: errorHandler)
    }

    static func makeRequest(urlString: String, method: HTTPMethod, responseHandler: @escaping JsonResponseHandler, errorHandler: @escaping ErrorHandler) {
        Alamofire.request(urlString, method: method).validate().responseString {response in
            switch response.result {
            case .success:
                responseHandler(response)
                break
            case .failure(let error):
                errorHandler(error)
                break
            }
        }
    }
}

在此示例文件中,Alamofire 导入工作正常,但第一个错误消息显示在没有类型 DataResponse 的类中。

每当我将 Bridging Header File 添加到项目 -> 目标 -> Vitamio 库编译的 Objective-C Briding Header 中;但是,我的 CocoaPods 添加的所有类都不起作用。

如果我删除桥接头文件,CocoaPods 可以工作,但 Vitamio 不能。

任何帮助将不胜感激。

【问题讨论】:

  • 是否有 Vitamio 的 Pod 存储库?我不确定你想用 Podfile 做什么。
  • Vitamio 没有 Pod 存储库

标签: ios objective-c cocoapods bridging-header


【解决方案1】:

当您使用“use_frameworks!”时在 Podfile 中,您不需要在桥接头中导入任何内容。 Cocoapods 正在为每个 pod 制作框架,因此您可以直接在 swift 文件中导入它们,就好像它们是通用框架一样:

import Vitamio

名称可能不同,因为我不知道这个特定的库。

编辑:似乎我误解了这个问题,等待更多信息。

【讨论】:

  • 是的。我读过一些类似的东西,但不太明白。 Vitamio 没有要导入的 Podfile,因此它仍然在 briding 头文件中完成。
  • @AdamW 你能在 pod 停止工作的地方发布一个示例 swift 文件吗?
  • 添加示例文件
  • @AdamW 你遇到了什么问题? Alamofire 不会导入?
  • 导入工作正常。但它不识别类 DataResponse
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-30
  • 2016-12-25
  • 2016-03-17
  • 1970-01-01
  • 1970-01-01
  • 2016-09-13
相关资源
最近更新 更多