2015-08-14 63 views
-1

我有一个技术问题。 我在swift项目中集成了widevine库。 我已经与bridging header连接了objective-c库。 的问题是,该库的使用:在swift中使用widevine库

WViOsApiStatus WV_Initialize(const WViOsApiStatusCallback callback, NSDictionary *settings); 

其中WViOsApiStatusCallback是:

typedef WViOsApiStatus (*WViOsApiStatusCallback)(WViOsApiEvent event, NSDictionary *attributes); 

在Objective-C我写这篇文章的代码.m文件:

WViOsApiStatus WidevineCallback(WViOsApiEvent event, NSDictionary *attributes); 

@implementation WidevineHelper 

-myFunc(){ 
    WV_Initialize(WidevineCallback, configuratioWV); 
} 

WViOsApiStatus WidevineCallback(WViOsApiEvent event, NSDictionary *attributes) 
{ 

//some code 
} 

在斯威夫特我有任何想法转换客观C代码

谢谢 安德烈

____附加INFO____

class WidevineHelper: NSObject { 

typealias WViOsApiStatusCallback = (event: WViOsApiEvent, attributes: NSDictionary?) -> WViOsApiStatus 
var testCallaback : WViOsApiStatusCallback = {(event: WViOsApiEvent, attributes: NSDictionary?) ->WViOsApiStatus in 


} 

func testfunction(){ 
    var test = WV_Initialize(callback: testCallaback , settings: [NSObject : AnyObject]()) 
} 
} 

我试试这个;它似乎正确的,但编译器说:

/path/WidevineHelper.swift:20:20:不能援引 'WV_Initialize' 类型的参数列表 '(回调:WViOsApiStatusCallback,设置:[NSObject的:AnyObject])'

在Objective-C的方法的Widevine声明:

typedef WViOsApiStatus (*WViOsApiStatusCallback)(WViOsApiEvent event, NSDictionary *attributes); 

WViOsApiStatus WV_Initialize(const WViOsApiStatusCallback callback, NSDictionary *settings); 

我要疯了,在迅速移植。很伤心。

+0

使用xcode 7测试版。在swift 2.0中,您可以轻松使用函数指针。 – drskur

回答

0

使用xcode 7测试版。在swift 2.0中,您可以轻松使用函数指针。

WV_Initialize({ (event, attr) -> WViOsApiStatus in 
    return WViOsApiStatus_OK 
}, options)