¿Cómo escribo un file PDF de la fuente NSData?

Tengo un método que devuelve NSData desde un CGPathRef como …

+ (NSData *) createPDFDataWithCGPath: (CGPathRef) path mediaBox: (CGRect) mediaBox { CFMutableDataRef data = NULL; if (path) { CFAllocatorRef allocator = NULL; data = CFDataCreateMutable(allocator, 0); CGDataConsumerRef consumer = CGDataConsumerCreateWithCFData(data); CGContextRef context = CGPDFContextCreate(consumer, &mediaBox, NULL); CFTypeRef keys[1] = { kCGPDFContextMediaBox }; CFTypeRef values[1] = { CFDataCreate(allocator, (const UInt8 *)&mediaBox, sizeof(CGRect)) }; CFDictionaryRef pageInfo = CFDictionaryCreate(allocator, keys, values, 1, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); CGPDFContextBeginPage(context, pageInfo); CGContextScaleCTM(context, 1, -1); CGContextTranslateCTM(context, 0, -mediaBox.size.height); CGContextAddPath(context, path); CGContextSetRGBFillColor(context, 0, 0, 0, 1); CGContextFillPath(context); CGPDFContextEndPage(context); CFRelease(pageInfo); CFRelease(values[0]); CGPDFContextClose(context); CGContextRelease(context); CGDataConsumerRelease(consumer); } return (NSData *)data; } 

Cuando bash utilizar esto y escribo un file PDF a partir de los datos, consigo mi file con el tamaño correcto, pero las routes no se dibujan en el PDF … básicamente es un documento vacío.

¿Es suficiente solo escribir el file como tal …

 [maskData writeToFile: DOCUMENTS_PATH_WITH_STRING(@"maskData.pdf") atomically: YES]; 

o son sus más aros para saltar aunque para escribirlo como un PDF?

Tienes razón. Si tiene datos en un object NSData, simplemente puede escribirlo en el disco. Pero debe agregar la extensión correcta (en su caso .pdf). Funciona para todo (videos, imágenes, etc.)

Esto fue un poco de un arenque rojo. Los paths estaban siendo dibujados pero no tenían trazos ni rellenos. El código en mi pregunta anterior es sonido y funciona como se esperaba.