EXIFの書き込みは、当初シナリオ通り、写真ファイルと一緒に書き込むことで実現しました。
これは、正直、よくわかっていません。
UIImagePickerControllerで撮影した写真にExif・位置情報を書き込んで保存する方法やSwiftを使って「ハワイに行ったふりカメラ」をつくるなどを見るには見たのですが、Objective-Cだったり、内容が少し違うような気がして、徹底して追求する根気がありませんでした。
それでも、何となく次のようにやったらEXIFの書き込みができてしまいました。もしかすると、まちがいがあるかもしれませんが、今後、UIを作っていく段階でバグがあれば修正する機会があると思います。
func execWriteEXIF(pFilepath:String, pEXIF:NSDictionary, pExportFilepath:String) { //
var wimageURL: NSURL = NSURL(fileURLWithPath: pFilepath)! //写真のFilepathからNSURLを作成する。
var cgImage:CGImageSourceRef = CGImageSourceCreateWithURL (wimageURL, nil)//イメージソース作成
var imageData:NSMutableData = NSMutableData()//
var dest:CGImageDestinationRef = CGImageDestinationCreateWithData (imageData, CGImageSourceGetType(cgImage), 1, nil)//
CGImageDestinationAddImageFromSource (dest, cgImage, 0, pEXIF as Dictionary )//
CGImageDestinationFinalize(dest) //
imageData.writeToFile(pExportFilepath, atomically: true) //写真ファイルの書き込み
}
細かい話として、緯度・経度のシンタクス・チェックをきっちりしないと、プレビューが落ちます。90度、180度、60分、60秒の最大値チェックとEWNSチェックは必須。また、-はマイナスでなく区切りのようです。これは、除去しないといけません。