-1

i have a technical question. I have integrated the widevine library inside my swift project. I have linked with bridging header the objective-c library. The problem is that the library use:

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

where WViOsApiStatusCallback is:

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

In objective-c i write this code in .m file:

WViOsApiStatus WidevineCallback( WViOsApiEvent event, NSDictionary *attributes );

@implementation WidevineHelper

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

WViOsApiStatus WidevineCallback( WViOsApiEvent event, NSDictionary *attributes )
{

 //some code
}

In Swift i have any idea to convert the objective-c code

Thank you Andrea

____ ADDITIONAL 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]())
}
}

I try this; it seems correct but compiler says:

/path/WidevineHelper.swift:20:20: Cannot invoke 'WV_Initialize' with an argument list of type '(callback: WViOsApiStatusCallback, settings: [NSObject : AnyObject])'

The widevine method declaration in objective-c is:

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

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

I'm going crazy with porting in swift. So sad..

Andrea Bozza
  • 1,374
  • 2
  • 12
  • 31

1 Answers1

0

use xcode 7 beta. In swift 2.0, you can use function pointer easily.

WV_Initialize({ (event, attr) -> WViOsApiStatus in
    return WViOsApiStatus_OK
}, options)
drskur
  • 329
  • 1
  • 8