In Swift, how to convert CFStringRef [] and CFTypeRef [] to CMutablePointer <COpaquePointer>?

In Swift, how to convert CFStringRef[] and CFTypeRef[] to CMutablePointer< COpaquePointer > ?

I would call CFDictionaryCreate from Swift. I defined:

 var keys: CFStringRef[] = [kCGImageSourceCreateThumbnailWithTransform, kCGImageSourceCreateThumbnailFromImageIfAbsent, kCGImageSourceThumbnailMaxPixelSize, kCGImageSourceCreateThumbnailFromImageAlways] var values: CFTypeRef[] = [kCFBooleanTrue, kCFBooleanTrue, imageSize, kCFBooleanTrue] CFDictionaryCreate(nil, keys, values, 4, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks) 

but donโ€™t know how to specify keys and values โ€‹โ€‹in the above call.

+7
swift
source share
1 answer

I can make the compiler stop complaining by creating unsafe pointers for you, but I havenโ€™t mentioned the use of CFDictionary in my depths.

 import ImageIO let dictionayKeyCB = UnsafePointer<CFDictionaryKeyCallBacks>() let valueKeyCB = UnsafePointer<CFDictionaryValueCallBacks>() let keys: [CFStringRef] = [kCGImageSourceCreateThumbnailWithTransform, kCGImageSourceCreateThumbnailFromImageIfAbsent, kCGImageSourceThumbnailMaxPixelSize, kCGImageSourceCreateThumbnailFromImageAlways] let keysPointer = UnsafeMutablePointer<UnsafePointer<Void>>.alloc(1) keysPointer.initialize(keys) let values: [CFTypeRef] = [kCFBooleanTrue, kCFBooleanTrue, kCFBooleanTrue, kCFBooleanTrue] let valuesPointer = UnsafeMutablePointer<UnsafePointer<Void>>.alloc(1) valuesPointer.initialize(values) CFDictionaryCreate(kCFAllocatorDefault, keysPointer, valuesPointer, 4, dictionayKeyCB, valueKeyCB) 
+5
source share

All Articles