Escribir metadatos de imagen (EXIF / TIFF / IPTC) en un archivo de imagen en OS X

Estoy creando una aplicación de edición de fotos, y hasta ahora he logrado leer los metadatos de los archivos de imagen con éxito (después de obtener una respuesta a esta pregunta:Leyendo datos de la cámara desde EXIF ​​al abrir NSImage en OS X).

source = CGImageSourceCreateWithURL((__bridge CFURLRef)url, NULL);
NSDictionary *props = (__bridge_transfer NSDictionary *) CGImageSourceCopyPropertiesAtIndex(source, 0, NULL);

Esto copia todos los metadatos del archivo de imagen a un diccionario, y funciona bien. Sin embargo, no pude averiguar cómo escribir estos metadatos de nuevo en un nuevo creadoNSImage (oa un archivo de imagen). Aquí es cómo guardo mi archivo (dondeimg es una instancia de NSImagesin metadatos yself.cachedMetadata es el diccionario leído de la imagen inicial):

NSBitmapImageRep *rep = [NSBitmapImageRep imageRepWithData:[img TIFFRepresentation]];
[rep setProperty:NSImageEXIFData withValue:self.cachedMetadata];
NSData *data;
if([[fileName lowercaseString] rangeOfString:@".png"].location != NSNotFound){
    data = [rep representationUsingType:NSPNGFileType properties:nil];
}else if([[fileName lowercaseString] rangeOfString:@".tif"].location != NSNotFound){
    data = [rep representationUsingType:NSTIFFFileType properties:nil];
}else{ //assume jpeg
    data = [rep representationUsingType:NSJPEGFileType properties:@{NSImageCompressionFactor: [NSNumber numberWithFloat:1], NSImageEXIFData: self.cachedMetadata}];
}

[data writeToFile:fileName atomically:YES];

¿Cómo puedo escribir los metadatos? Solía ​​escribir EXIF ​​para JPEG (el diccionario era EXIF ​​solo anteriormente) con éxito, pero como EXIF ​​carecía de algunos de los campos que tenían las imágenes iniciales (etiquetas IPTC y TIFF), necesitaba cambiar mi método de lectura. Ahora tengo todos los datos, pero no sé cómo escribirlos en el archivo de imagen recién creado.

Gracias, Can.

Respuestas a la pregunta(2)

Su respuesta a la pregunta