使用指针访问Swift / Obj-c中的指针到Swift Conversion

时间:2015-07-28 18:42:31

标签: objective-c swift

我试图在Swift中执行以下操作:

CFArrayRef attachmentsArray = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, 0);
    if (CFArrayGetCount(attachmentsArray)) {
        CFBooleanRef notSync;
        CFDictionaryRef dict = CFArrayGetValueAtIndex(attachmentsArray, 0);
        BOOL keyExists = CFDictionaryGetValueIfPresent(dict,
                                                   kCMSampleAttachmentKey_NotSync,
                                                   (const void **)&notSync);

我有:

if CFArrayGetCount(attachmentsArray) != 0 {
    let dict = CFArrayGetValueAtIndex(attachmentsArray, 0)

但是,dict是一个UnsafePointer而不是像它应该的字典。当我打印附件时,我得到了

Optional({ DependsOnOthers = 0; })

我尝试将它转换为CFDictionaryRef,但它会在运行时失败。 如何在Swift中成功完成上述Obj-C代码?

1 个答案:

答案 0 :(得分:3)

  

但是,dict是一个UnsafePointer而不是像它应该的字典。

不,不是“它应该是”。看看宣言:

func CFArrayGetValueAtIndex(theArray: CFArray!, _ idx: CFIndex) 
    -> UnsafePointer<Void>

它返回一个UnsafePointer-to-void,因为它应该是这样做的。 (在Objective-C中,它返回const void *。)