【问题标题】:Need help converting (CFPropertyListRef *)nsdictionary to swift需要帮助将 (CFPropertyListRef *)nsdictionary 转换为 swift
【发布时间】:2014-10-26 21:58:56
【问题描述】:

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

 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)");

任何帮助都会很棒。

谢谢

【问题讨论】:

  • 您在常量中使用构造对象。您需要一个指向 NSDictionary 的指针,因此 MIDIObjectGetProperties 可以创建对象并覆盖它,从而返回一个值。

标签: swift objective-c macos coremidi


【解决方案1】:

这是MIDIObjectGetProperties 在 Swift 中的签名:

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

所以你需要将UnsafeMutablePointer 传递给Unmanaged&lt;CFPropertyList&gt;?

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

MIDIObjectGetProperties(midiDevice, &unmanagedProperties, 1)

现在您有了属性,但它们位于非托管变量中——您可以使用takeUnretainedValue() 方法将它们取出,然后将生成的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;
}

【讨论】:

    猜你喜欢
    • 2018-11-24
    • 2019-12-23
    • 2021-11-06
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多