Aar*_*ron 3 asynchronous objective-c callback swift
我试图在目标C类中调用包含完成处理程序的Swift函数,但我不确定如何实现它.
这是我的Swift Code
@objc class textToSpeech:NSObject{
func toSpeech(word: NSString, sucess:()->Void) -> NSURL {
let tempDirectory = NSURL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true)
let tempFile = tempDirectory.URLByAppendingPathComponent((word as String) + ".wav")
let tts = TextToSpeech(username: "xxxxxx", password: "xxxxxx")
tts.synthesize(word as String,
voice: SynthesisVoice.GB_Kate,
audioFormat: AudioFormat.WAV,
failure: { error in
print("error was generated \(error)")
}) { data in
data.writeToURL(tempFile, atomically: true)
print("createdURL")
print(tempFile)
sucess();
}
return tempFile
}
Run Code Online (Sandbox Code Playgroud)
我如何在目标c中编写函数调用.我已经完成了项目的设置,因此我可以从目标c调用swift函数.
例如,你有这个代码:
@objc class PDTextToSpeech: NSObject{
func toSpeech(word: NSString, success: () -> Void) -> NSURL {
// ...
return NSURL()
}
}
Run Code Online (Sandbox Code Playgroud)
因此,您可以轻松地将obj-c中的Swift代码与#import "<ModuleName>-Swift.h"
项目名称的位置联系起来.
然后你可以打电话:
[[PDTextToSpeech new] toSpeech:@"String" success:^{
NSLog(@"Success");
}];
Run Code Online (Sandbox Code Playgroud)
我使用的PDTextToSpeech是类名,因为最好使用uniq前缀调用obj-c中的类.如果您调用了项目TestProject- 您可以使用TP前缀.
| 归档时间: |
|
| 查看次数: |
1037 次 |
| 最近记录: |