小编jup*_*ppy的帖子

从C API接收多维数组,如何在Swift中处理?

我在Swift应用程序中使用了C库,但无法弄清楚如何获取C方法应该返回的多维数组。

我从C API收到此消息:

struct resultArray
{
    double *data;
    int size[2];
};
Run Code Online (Sandbox Code Playgroud)

哪里:

size =矩阵大小,一个包含行数和列数的两个元素的数组

数据=矩阵数据

我可以迅速进行以下操作以获取大小:

let numRows = Int(results.size.0)
let numColoumns = Int(results.size.1)
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何获得矩阵以便可以迭代它?我尝试了以下方法:

let matrixResult = results.data.memory
Run Code Online (Sandbox Code Playgroud)

这似乎只返回一个double值,因为matrixResult变为Double。

然后我尝试了这个:

let matrixResult = results.data
Run Code Online (Sandbox Code Playgroud)

这使得matrixResult为:

UnsafeMutablePointer<Double>
Run Code Online (Sandbox Code Playgroud)

我希望收到C库文档中指定的矩阵。然后我想遍历此矩阵并从第一行获取值并将其放入Swift数组中。有人知道我在这里缺少什么吗?

c arrays ios swift

6
推荐指数
1
解决办法
194
查看次数

在Swift iOS中播放PCM文件

我想使用AVAudioEngine播放pcm文件,使用Swift 2.0播放AVAudioPlayerNode.我是音频编程的新手,不了解我的代码问题:

    var audioEngine: AVAudioEngine = AVAudioEngine()
    var audioFilePlayer: AVAudioPlayerNode = AVAudioPlayerNode()


    @IBAction func playButton(sender: AnyObject) {

    var file = "file7.pcm"
    var fileManager = NSFileManager.defaultManager()

    var wayToFile = fileManager.URLsForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask)
    var passMusicFileURL: NSURL?

    if let documentPath: NSURL = wayToFile.first as NSURL! {
        let musicFile = documentPath.URLByAppendingPathComponent(file)

        passMusicFileURL = musicFile

        var audioFile = AVAudioFile()
        var audioBuffer = AVAudioPCMBuffer()

        do{
            audioFile = try AVAudioFile(forReading: passMusicFileURL!)
            let audioFormat = audioFile.processingFormat
            let audioFrameCount = UInt32(audioFile.length)

            audioBuffer = AVAudioPCMBuffer(PCMFormat: audioFormat, frameCapacity: audioFrameCount)

        } catch …
Run Code Online (Sandbox Code Playgroud)

audio ios swift

5
推荐指数
1
解决办法
777
查看次数

标签 统计

ios ×2

swift ×2

arrays ×1

audio ×1

c ×1