2016-11-22 4 views
0

最近iOSを開始しましたが、Vitamio Objective-CライブラリとSwift Projectを統合しようとしています。私は様々な迅速なライブラリをインポートするためにCocoaPodを使用しています。 Vitamioはブリッジヘッダーファイルと統合されています。Swift CocoaPodをブリッジヘッダーファイルと統合する方法

ブリッジ-ヘッダーファイル

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

:この例では

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のクラス

私は、プロジェクト - >ターゲット - > Objective-Cブリッジヘッダーにブリッジヘッダーファイルを追加するたびに、Vitamioライブラリをコンパイルします。しかし、私のCocoaPodsで追加されたクラスはありません。

私はブリッジヘッダーファイルを削除する場合、CocoaPodsは動作しますが、Vitamioは動作しません。

ご協力いただければ幸いです。

+0

'Vitamio'のポッドリポジトリはありますか? 'Podfile'で何をしようとしているのか分かりません。 – Ryan

+0

Vitamioのポッドレポはありません –

答えて

4

「use_frameworks!」を使用すると、あなたはPodfileの中で、ブリッジヘッダーに何かをインポートする必要はありません。 Cocoapodsは、彼らはあなたの迅速なファイルに直接、共通のフレームワークであるかのようにあなたがちょうどそれらをインポートすることができますので、あなたのためにそれらのポッドのそれぞれの枠組みを作っている:

import Vitamio 

私はこれを知っていないと名前は、異なる場合があります特定のライブラリ。

編集:私は問題を少し誤解しているようですが、詳細を待っています。

+0

ええ。私はこの効果に何かを読んだが、あまり理解していない。 VitamioにはインポートするPodfileがないため、なぜブリッジヘッダーファイルでまだ実行されているのですか。 –

+0

@AdamWポッドが機能しなくなるサンプルスウィフトファイルを投稿できますか? –

+0

サンプルファイル –

関連する問題