2016-12-05 16 views
2

私は場所を指定してカメラを操作しています。
キャプチャイメージボタンをクリックしたときに、辞書内のすべての位置情報を収集し、さらにCFDictionarySetValueで設定します。ここに私が直面している問題があります。次のように
CFDictionarySetValueのフォーマットはdict, key, valueです:swift 3.0でUnSafeRawPointerを使用する方法

CFDictionarySetValue((dictionary)CFMutableDictionary!, (key)UnsafeRawPointer!,(value) UnsafeRawPointer!) 

、私の次のように辞書、キーと値は以下のとおりです。

辞書:

let mutable : CFMutableDictionary = CFDictionaryCreateMutableCopy(nil, 0, metaDict) 

キー:

kCGImagePropertyGPSDictionary 

let gpsDict : NSDictionary = [kCGImagePropertyGPSLatitude: Int(fabs(loc.coordinate.latitude)), kCGImagePropertyGPSLatitudeRef : ((loc.coordinate.latitude >= 0) ? "N" : "S"), kCGImagePropertyGPSLongitude : Int(fabs(loc.coordinate.longitude)),kCGImagePropertyGPSLongitudeRef : ((loc.coordinate.longitude >= 0) ? "E" : "W") , kCGImagePropertyGPSTimeStamp : formatter.string(from: loc.timestamp), kCGImagePropertyGPSAltitude : Int(fabs(loc.altitude))] 

それはCFDictionarySetValue(mutable, kCGImagePropertyGPSDictionary, gpsDictionary)

のように見えると私は言って上記の行でエラーが出ます:"Cannot convert value of type NSDictionary to UnSafeRawPointer! for gpsDictionary"

はいくつかの方法が、まだありません成功をしようとしました。

答えて

3

を引数としてCFDictionarySetValue(...)に渡しますが、予想される型はUnSafeRawPointerのポインタです。第2引数kCGImagePropertyGPSDictionaryについても同様です。ポインターの代わりにNSStringを渡しています。

これを修正するには、両方のパラメータのポインタを作成します。一つの可能​​なアプローチ:

let pGPSDictionary = Unmanaged.passUnretained(kCGImagePropertyGPSDictionary).toOpaque() 
let pGpsDict = Unmanaged.passUnretained(gpsDict).toOpaque() 
CFDictionarySetValue(mutable, pGPSDictionary, pGpsDict) 

私は今覚えていないことUnSafeRawPointer Sを、作成するためのよりよい構文があります。

+0

ありがとうたくさんのバディ、それは完全に働いた:) – iDeveloper

関連する問題