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

需要帮助将(CFPropertyListRef*)nsdictionary转换为swift吗,swift,objective-c,macos,coremidi,Swift,Objective C,Macos,Coremidi,我需要一点帮助来转换这个 MIDIDeviceRef midiDevice = MIDIGetDevice(i); NSDictionary *midiProperties; MIDIObjectGetProperties(midiDevice, (CFPropertyListRef *)&midiProperties, YES); NSLog(@"Midi properties: %d \n %@", i, midiProperties); 斯威夫特。我有这个,但是我在制作CFP

我需要一点帮助来转换这个

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

MIDIObjectGetProperties(midiDevice, (CFPropertyListRef *)&midiProperties, YES);
NSLog(@"Midi properties: %d \n %@", i, midiProperties);
斯威夫特。我有这个,但是我在制作CFPropertList时被挂断了

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

 MIDIObjectGetProperties(midiDevice,  CFPropertyListRef(midiProperties), 1);
println("Midi properties: \(index) \n \(midiProperties)");
任何帮助都会很好


谢谢

这是Swift中
MIDIObjectGetProperties
的签名:

func MIDIObjectGetProperties(obj: MIDIObjectRef, outProperties: UnsafeMutablePointer<Unmanaged<CFPropertyList>?>, deep: Boolean) -> OSStatus
现在您有了属性,但它们位于非托管变量中--您可以使用
takeunrepainedvalue()
方法将它们取出,然后将生成的
CFPropertyList
强制转换为
NSDictionary

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;
}
Midi属性:0
{
“apple.midirtp.errors”=;
driver=“com.apple.AppleMIDIRTPDriver”;
实体=(
);
image=“/Library/Audio/MIDI Drivers/AppleMIDIRTPDriver.plugin/Contents/Resources/RTPDriverIcon.tiff”;
制造商=”;
model=“”;
名称=网络;
离线=0;
scheduleAheadMuSec=50000;
uniqueID=442847711;
}

您正在常量中使用构造对象。您需要一个指向NSDictionary的指针,这样MIDIObjectGetProperties就可以创建对象并覆盖它,从而返回一个值。
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;
}