在 Cocoa 中,保存图像时出错

In Cocoa get an error saving an image

缩放后我使用此代码保存图片:

NSData *dataToWrite = [rep representationUsingType:NSPNGFileType  properties:nil];

[dataToWrite writeToFile:finalPath atomically:NO];

它工作正常,但现在使用新的 Xcode 我收到警告:

Null passed to a callee that requires a non-null argument

我应该在属性中输入什么而不是 nil?

非常感谢您的帮助

您需要传递一个 NSDictionary,并在 NSBitmapImageRep.h 中找到可能的字典键(不过您可以传递一个空字典)

APPKIT_EXTERN NSString* NSImageCompressionMethod;   // TIFF input/output (NSTIFFCompression in NSNumber)
APPKIT_EXTERN NSString* NSImageCompressionFactor;   // TIFF/JPEG input/output (float in NSNumber)
APPKIT_EXTERN NSString* NSImageDitherTransparency;  // GIF output (BOOL in NSNumber)
APPKIT_EXTERN NSString* NSImageRGBColorTable;       // GIF input/output (packed RGB in NSData)
APPKIT_EXTERN NSString* NSImageInterlaced;      // PNG output (BOOL in NSNumber)
APPKIT_EXTERN NSString* NSImageColorSyncProfileData;    // TIFF,GIF input/output (NSData)
APPKIT_EXTERN NSString* NSImageFrameCount;  // GIF input (int in NSNumber) (read-only)
APPKIT_EXTERN NSString* NSImageCurrentFrame;    // GIF input (int in NSNumber)
APPKIT_EXTERN NSString* NSImageCurrentFrameDuration;    // GIF input (float in NSNumber) (read-only)
APPKIT_EXTERN NSString* NSImageLoopCount            ;   // GIF input (int in NSNumber) (read-only)
APPKIT_EXTERN NSString* NSImageGamma                ;   // PNG input/output (float in NSNumber)
APPKIT_EXTERN NSString* NSImageProgressive          ;   // JPEG input/output (BOOL in NSNumber)
APPKIT_EXTERN NSString* NSImageEXIFData             ;   // JPEG input/output (NSDictionary)
APPKIT_EXTERN NSString* NSImageFallbackBackgroundColor  NS_AVAILABLE_MAC(10_5); // JPEG output (NSColor)

对于遇到同样问题的人,我解决了创建这个 NSDictionary 的问题:

NSDictionary * dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithFloat:0.5] forKey:NSImageCompressionFactor];

并在属性中放置 "dict" 而不是 nil。