gpt4 book ai didi

objective-c - OBJ-C 到 Swift 3 的转换错误

转载 作者:行者123 更新时间:2023-11-30 12:17:00 25 4
gpt4 key购买 nike

我正在尝试将 EZAudio ( https://github.com/syedhali/EZAudio ) Objective-C 库转换为 Swift 3。我正在其中执行“EZAudioPlayFileExample”部分。

Objective-C

- (void)openFileWithFilePathURL:(NSURL*)filePathURL
{
self.audioFile = [EZAudioFile audioFileWithURL:filePathURL];
self.filePathLabel.text = filePathURL.lastPathComponent;

//
// Plot the whole waveform
//
self.audioPlot.plotType = EZPlotTypeBuffer;
self.audioPlot.shouldFill = YES;
self.audioPlot.shouldMirror = YES;

//
// Get the audio data from the audio file
//
__weak typeof (self) weakSelf = self;
[self.audioFile getWaveformDataWithCompletionBlock:^(float **waveformData,
int length)
{
[weakSelf.audioPlot updateBuffer:waveformData[0]
withBufferSize:length];
}];
}

swift 3

func openFileWithFilePathURL(filePathURL: NSURL) {
self.audioFile = EZAudioFile(url: filePathURL as URL!)

//
// Plot the whole waveform
//
self.plot.plotType = .buffer
self.plot.shouldFill = true
self.plot.shouldMirror = true

//
// Get the audio data from the audio file
//
weak var weakSelf = self
self.audioFile.getWaveformData(completionBlock: {(_ waveformData: Float, _ length: Int) -> Void in
weakSelf?.plot.updateBuffer(waveformData[0], withBufferSize: length) // error in this line as Float as no subscript members
})
}

我知道Float参数没有像[0]这样的下标成员。但我想转换 Objective-C 代码。或者这里的任何人都使用这个库的 Swift 版本。注意:我想要其中的“EZAudioPlayFileExample”。

最佳答案

float **waveformData 实际上是一个 unsafemutablepointer。所以你必须在 swift 3.0 中使用 unsafemutablepointer 。您可以在 swift 中使用 unsafemutablepointer,例如

UnsafeMutablePointer<UnsafeMutablePointer<Float>>

你可以使用像

self.audioFile.getWaveformData(completionBlock: {(_ waveformData: UnsafeMutablePointer<UnsafeMutablePointer<Float>>, _ length: Int) -> Void in
weakSelf?.plot.updateBuffer(waveformData[0], withBufferSize: length)
})

我刚刚下载了 EZAudio 的旧版本 swift 实现并转换为 swift 3.0。可以在这个link找到
我不知道这对你有什么帮助,但你可以在此基础上进行构建。您也可以引用这个issue已在 gitHub 页面上报道

关于objective-c - OBJ-C 到 Swift 3 的转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45300721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com