2014-06-12 9 views
7

In Swift come convertire CFStringRef[] e CFTypeRef[] in CMutablePointer<COpaquePointer>?In Swift come convertire CFStringRef [] e CFTypeRef [] in CMutablePointer <COpaquePointer>?

Vorrei chiamare CFDictionaryCreate da Swift. Ho definito:

var keys: CFStringRef[] = [kCGImageSourceCreateThumbnailWithTransform, kCGImageSourceCreateThumbnailFromImageIfAbsent, kCGImageSourceThumbnailMaxPixelSize, kCGImageSourceCreateThumbnailFromImageAlways] 

var values: CFTypeRef[] = [kCFBooleanTrue, kCFBooleanTrue, imageSize, kCFBooleanTrue] 

CFDictionaryCreate(nil, keys, values, 4, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks) 

ma non so come specificare chiavi e valori nella chiamata precedente.

+0

Immagino tu stia guardando questo riferimento? https://developer.apple.com/library/prerelease/ios/documentation/CoreFoundation/Reference/CFDictionaryRef/index.html#//apple_ref/c/func/CFDictionaryCreate – Jiaaro

+0

Ehi, hai trovato la risposta? – san

risposta

5

È possibile far sì che il compilatore smetta di lamentarsi creando i puntatori non sicuri, ma non sono al corrente del resto dell'utilizzo di CFDictionary.

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) 
Problemi correlati