2010-03-21 42 views
5

Làm cách nào để lưu trữ hình ảnh trong tệp plist. Tệp plist này được lưu trữ ở đâu? Bất cứ ai có thể cho tôi một ví dụ? Câu trả lời sẽ được đánh giá cao!Lưu trữ hình ảnh trong plist

Trả lời

8

Các UIImage không thực hiện giao thức NSCoder trực tiếp những gì cần thiết cho việc lưu trữ trong plists.

Nhưng, khá dễ dàng để thêm như dưới đây.

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 

Khi điều này đã được thêm vào, bạn sẽ có thể lưu trữ UIImages trong plist với ví dụ

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

Lưu ý: Tôi không khuyên bạn nên làm điều này, trừ khi bạn thực sự muốn, tức là đối với những hình ảnh thực sự nhỏ.

0

tệp plist có nghĩa là lưu trữ cặp khóa-giá trị, không phải tài nguyên của ứng dụng của bạn. Các biểu tượng, hình ảnh và biểu mẫu thường được lưu trữ trong tệp .xib (xem Bộ dựng giao diện)

+1

Cảm ơn rất nhiều vì đề xuất của bạn !! – isarathg

1

Phụ thuộc vào vị trí và thời điểm những hình ảnh này được ứng dụng biết đến.

Đối với hình ảnh như một phần của trình bao ứng dụng, here có thể cung cấp một số thông tin chi tiết. Nếu bạn muốn lưu trữ hình ảnh trong chạy của ứng dụng, bạn có thể sử dụng cùng một khái niệm (người dùng plist với đường dẫn tương đối với hình ảnh).

- Frank

4

Luôn lưu trữ đường dẫn hình ảnh trong .plist, không bao giờ là hình ảnh thực. Nếu bạn làm thế, bạn sẽ có một hit hiệu suất. Bạn muốn tải hình ảnh khi bạn cần chúng, không phải tất cả cùng một lúc.

Các vấn đề liên quan