2016-11-22 66 views
0

我最近開始做iOS,我試圖將我的Swift項目與Vitamio Objective-C庫集成。我使用CocoaPods導入各種快速庫。 Vitamio與橋接頭文件集成在一起。如何將Swift CocoaPods與橋接頭文件集成

橋接頭文件

#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 */ 

PodFile:

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 

樣品斯威夫特文件

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的類。

每當我將橋接頭文件添加到vitamio庫編譯的project - > target - > Objective-C Briding Header中時,然而,我的CocoaPods沒有添加任何類。

如果我刪除橋接頭文件CocoaPods的工作,但維塔米奧沒有。

任何幫助,將不勝感激。

+0

是否有'Vitamio'的Pod存儲庫?我不確定你想用'Podfile'做什麼。 – Ryan

+0

有沒有一個Pod回購Vitamio –

回答

4

當您使用「use_frameworks!」時在Podfile中,您不需要在橋接頭中導入任何內容。的CocoaPods爲每個豆莢那些爲你做的框架,所以你可以導入它們,好像它們是直接在快捷文件共同框架:

import Vitamio 

的名稱可能不同,因爲我不知道這一點特定的庫。

編輯:似乎我誤解了一點問題,等待更多的信息。

+0

是的。我讀了一些這個效果,但不太明白。 Vitamio沒有導入Podfile文件,因此爲什麼它仍然在briding頭文件中完成。 –

+0

@AdamW你可以發佈一個示例swift文件,其中pod停止工作? –

+0

添加了示例文件 –