我在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数组中。有人知道我在这里缺少什么吗?
我想使用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)