SwiftでObjective-CのFrameworkを読み込む方法


Objective-Cで作成されたFrameworkを読み込み、Swiftで呼び出す。
サンプルとしてGameFeatSDKを使用。

(1)Bridging-Header.hを作成

Objctive-CのFrameworkをimportするため
「GameFeatKit-Bridging-Header.h」
というヘッダーファイルを作成する。
※「GameFeatKit」の部分は任意で変更可能。

(2)Bridging-Header.hを編集

GameFeatKit-Bridging-Header.h
#import <GameFeatKit/GFController.h>

(3)Bridging-Header.hを読み込む

[Build Settings]の[Objective-C Bridging Header]に
GameFeatKit-Bridging-Header.h
を指定する

$(SRCROOT)/$(PROJECT)/GameFeatKit-Bridging-Header.h

=====

■呼び出し方法

@Obj-C
[GFController activateGF:@"メディアID" useCustom:YES useIcon:YES usePopup:YES];

@Swift
GFController.activateGF("メディアID", useCustom: true, useIcon: true, usePopup: true);

このような形で呼び出すことができる。

Delegateに関しても同様に

@Obj-C
@interface UITestViewController : UIViewController <GFViewDelegate> {

@Swift
class UITestViewController: UIViewController, GFViewDelegate {

@Obj-C
- (void)didShowGameFeat{
 NSLog(@"didShowGameFeat");
}
- (void)didCloseGameFeat{
 NSLog(@"didCloseGameFeat");
}
- (void)didGetGfAds:(NSArray *)lists {
 NSLog(@"didGetGfAds");
 NSLog(@"%@", lists);
}
- (void)failGetGfAds {
 NSLog(@"failGetGfAds");
}

@Swift
func didShowGameFeat(){
 println("didShowGameFeat");
}
func didCloseGameFeat(){
 println("didCloseGameFeat");
}
func didGetGfAds(lists:NSArray){
 for v:NSDictionary! in lists as AnyObject[]{
  let app:String = v.objectForKey("app") as String;
  let strTitle:String = v.objectForKey("title") as String;
  let strUrl:String = v.objectForKey("url") as String;
  println("\(app) : \(strTitle) \(strUrl)");
 }
}
func failGetGfAds(){
 println("failGetGfAds");
}

と指定する。