У меня есть функция, написанная в Objective-C ниже, и я хочу преобразовать ее в Swift, но я продолжаю получать ошибки.Преобразование Objective-C в Swift
Ниже приводится код 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 код:
func openFileWithFilePathURL(url: NSURL) {
let audioFile = EZAudioFile(URL: url)
audioPlot.plotType = EZPlotType.Buffer
audioPlot.shouldFill = true
audioPlot.shouldMirror = true
audioFile.getWaveformDataWithCompletionBlock({(waveformData, length) in
audioPlot.updateBuffer(waveformData[0], withBufferSize: length)
})
}
И я всегда получаю ошибку
Command failed due to signal: Segmentation fault: 11
Я новый на язык iOS, и я потратил часы на эту проблему. Я действительно не знаю, как решить эту проблему.
Я думаю, проблема заключается в том, как я преобразовал блок из Objective-C в Swift.
Благодарим за помощь!
https://github.com/syedhali/EZAudio/issues/198 –
http://stackoverflow.com/questions/31305488/how-to- write-block-with-arg-unsafemutablepointerunsafemutablepointerfloat –
Эта ошибка (ошибка сегментации) в моем опыте является ошибкой в самом коде Xcode, когда он дросселирует в синтаксисе, который действительно действителен. Обычно я пытаюсь скомпилировать различные варианты синтаксиса, пока он не будет работать. – paulvs