swift - 需要帮助将 (CFPropertyListRef *)nsdictionary 转换为 swift

标签 swift objective-c macos coremidi

我需要一点帮助来转换它

 MIDIDeviceRef midiDevice = MIDIGetDevice(i);
NSDictionary *midiProperties;

MIDIObjectGetProperties(midiDevice, (CFPropertyListRef *)&midiProperties, YES);
NSLog(@"Midi properties: %d \n %@", i, midiProperties);

swift 。我有这个,但我对转换 CFPropertList 挂断了电话。

 var midiDevice = MIDIGetDevice(index)
let midiProperties =  NSDictionary()

 MIDIObjectGetProperties(midiDevice,  CFPropertyListRef(midiProperties), 1);
println("Midi properties: \(index) \n \(midiProperties)");

任何帮助都会很棒。

谢谢

最佳答案

这是 MIDIObjectGetProperties 的签名在 Swift 中:

func MIDIObjectGetProperties(obj: MIDIObjectRef, outProperties: UnsafeMutablePointer<Unmanaged<CFPropertyList>?>, deep: Boolean) -> OSStatus

所以你需要传入一个UnsafeMutablePointerUnmanaged<CFPropertyList>? :

var midiDevice = MIDIGetDevice(0)
var unmanagedProperties: Unmanaged<CFPropertyList>?

MIDIObjectGetProperties(midiDevice, &unmanagedProperties, 1)

现在您有了自己的属性,但它们位于非托管变量中——您可以使用 takeUnretainedValue()方法将它们取出,然后转换结果 CFPropertyListNSDictionary :

if let midiProperties: CFPropertyList = unmanagedProperties?.takeUnretainedValue() {
    let midiDictionary = midiProperties as NSDictionary
    println("Midi properties: \(index) \n \(midiDictionary)");
} else {
    println("Couldn't load properties for \(index)")
}

结果:

Midi properties: 0 
 {
    "apple.midirtp.errors" = <>;
    driver = "com.apple.AppleMIDIRTPDriver";
    entities =     (
    );
    image = "/Library/Audio/MIDI Drivers/AppleMIDIRTPDriver.plugin/Contents/Resources/RTPDriverIcon.tiff";
    manufacturer = "";
    model = "";
    name = Network;
    offline = 0;
    scheduleAheadMuSec = 50000;
    uniqueID = 442847711;
}

关于swift - 需要帮助将 (CFPropertyListRef *)nsdictionary 转换为 swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25626731/

相关文章:

objective-c - NSSegmentedCell 子类的鼠标事件?

Objective-C:将两个整数相除并返回一个四舍五入的整数值

python - M1 Mac : Running Brownie Python

ios - 找不到适合 iPhone5 架构的图片

ios - 为什么重复 UIView 动画会在边缘滑动时卡住?

ios - 自 Xcode 9.3 以来的可空性完整性警告

macos - FFmpeg 命令应用多个过滤器并限制最终文件大小

ios - 具有核心数据的 TableView 中的搜索栏(使用 Swift)

swift - 如何根据 mysql 中的三个代码放置 pin?

ruby - 无法设置 ruby​​ 环境 - 安装 fii gem 错误