Хранение изображения в листе - PullRequest
5 голосов
/ 21 марта 2010

Как мы можем хранить изображения в файле plist. Где хранится этот файл plist? Кто-нибудь может дать мне пример? Ответы будут с благодарностью!

Ответы [ 4 ]

8 голосов
/ 21 марта 2010

UIImage не реализует протокол NSCoder напрямую, который необходим для хранения в списках.

Но добавить его довольно просто, как показано ниже.

UIImage + NSCoder.h

#import <Foundation/Foundation.h>

@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

Когда это будет добавлено, вы сможете хранить UIImages в plist, например:

// 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];

Примечание: я не рекомендую делать это, если вы действительно этого не хотите, то есть для действительно маленьких изображений.

4 голосов
/ 21 марта 2010

Всегда сохраняйте путь изображения в .plist, а не фактическое изображение.Если вы это сделаете, вы получите удар производительности.Вы хотите загружать изображения по мере необходимости, а не все сразу.

1 голос
/ 21 марта 2010

Зависит от того, где и когда эти изображения известны приложению.

Для изображений, являющихся частью комплекта приложений, здесь может предоставить некоторую информацию.Если вы хотите сохранять изображения во время запуска приложения, вы можете использовать те же понятия (пользовательский список с относительными путями к изображениям).

- Фрэнк

0 голосов
/ 21 марта 2010
Файлы

plist предназначены для хранения пар ключ-значение, а не ресурсов вашего приложения. Значки, изображения и формы обычно хранятся в файле .xib (см. Интерфейсный конструктор)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...