Storing image in plist

后端 未结 4 1755
暖寄归人
暖寄归人 2020-11-28 12:56

How can we store images in plist file. Where is this plist file stored? Can anyone give me an example? Answers will be greatly appreciated!

4条回答
  •  误落风尘
    2020-11-28 13:57

    The UIImage doesn't implement the NSCoder protocol directly that is necessary for storage in plists.

    But, it is fairly easy to add like below.

    UIImage+NSCoder.h

    #import 
    
    @interface UIImage (MyExtensions)
    - (void)encodeWithCoder:(NSCoder *)encoder;
    - (id)initWithCoder:(NSCoder *)decoder;
    @end
    

    UIImage+NSCoder.m

    #import "UIImage+NSCoder.h"
    
    @implementation UIImage (MyExtensions)
    
    - (void)encodeWithCoder:(NSCoder *)encoder
    {
      [encoder encodeDataObject:UIImagePNGRepresentation(self)];
    }
    
    - (id)initWithCoder:(NSCoder *)decoder
    {
      return [self initWithData:[decoder decodeDataObject]];
    }
    
    @end
    

    When this has been added you will be able to store UIImages in plist with ie

    // Get a full path to a plist within the Documents folder for the app
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                         NSUserDomainMask,
                                                         YES);
    NSString *path = [NSString stringWithFormat:@"%@/my.plist",
                                                  [paths objectAtIndex:0]];
    
    // Place an image in a dictionary that will be stored as a plist
    [dictionary setObject:image forKey:@"image"];
    
    // Write the dictionary to the filesystem as a plist
    [NSKeyedArchiver archiveRootObject:dictionary toFile:path];
    

    Note: I do not recommend doing this, unless you really want to, ie for really small images.

提交回复
热议问题