我试图在Swift中执行以下操作:
CFArrayRef attachmentsArray = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, 0);
if (CFArrayGetCount(attachmentsArray)) {
CFBooleanRef notSync;
CFDictionaryRef dict = CFArrayGetValueAtIndex(attachmentsArray, 0);
BOOL keyExists = CFDictionaryGetValueIfPresent(dict,
kCMSampleAttachmentKey_NotSync,
(const void **)¬Sync);
我有:
if CFArrayGetCount(attachmentsArray) != 0 {
let dict = CFArrayGetValueAtIndex(attachmentsArray, 0)
但是,dict是一个UnsafePointer而不是像它应该的字典。当我打印附件时,我得到了
Optional({ DependsOnOthers = 0; })
我尝试将它转换为CFDictionaryRef,但它会在运行时失败。 如何在Swift中成功完成上述Obj-C代码?
答案 0 :(得分:3)
但是,dict是一个UnsafePointer而不是像它应该的字典。
不,不是“它应该是”。看看宣言:
func CFArrayGetValueAtIndex(theArray: CFArray!, _ idx: CFIndex)
-> UnsafePointer<Void>
它返回一个UnsafePointer-to-void,因为它应该是这样做的。 (在Objective-C中,它返回const void *
。)