CoreData: сохранить изображения к DB или нет?

Я делаю приложение, которое делает фотографии с веб-сайта о некотором Имени пользователя и показывает его в UITable с именем пользователя затем при нажатии на имя пользователя, которое это показывает фотографиям для этого пользователя и затем нажимающий к названию фотографии, которую это показывает полноэкранной фотографии.

Мой вопрос, я использую NSData для получения фотографий от Интернета. Я должен сохранить данные к CoreData? Когда нажимающее имя пользователя это создает NSData и загружает фотографии с Интернета и показывает им на UITable. И это занимает время.

Что такое хороший подход? и Как может сохранить, это отображает к CoreData?

Я использую этот метод

NSData *imageData=[flickr dataForPhotoID:firstPhoto.id fromFarm:firstPhoto.farm 
onServer:firstPhoto.server withSecret:firstPhoto.secret inFormat: 
FlickrFetcherPhotoFormatSquare];

и здесь определение dataForPhotoID метода

- (NSData *)dataForPhotoID:(NSString *)photoID fromFarm:(NSString *)farm   
   onServer:(NSString *)server withSecret:(NSString *)secret 
 inFormat:(FlickrFetcherPhotoFormat)format {

#if TEST_HIGH_NETWORK_LATENCY
sleep(1);
#endif

NSString *formatString;

switch (format) {
    case FlickrFetcherPhotoFormatSquare:    formatString = @"s"; break;
    case FlickrFetcherPhotoFormatLarge:     formatString = @"b"; break;
}

NSString *photoURLString = [NSString stringWithFormat:@"http://farm%@.static.flickr.com/%@/%@_%@_%@.jpg", farm, server, photoID, secret, formatString];
NSURL *url = [NSURL URLWithString:photoURLString];

return [NSData dataWithContentsOfURL:url];
}
24
задан Mark 18 September 2013 в 14:30
поделиться

1 ответ

Во-первых, всегда храните изображения в удобный формат, такой как PNG или JPEG вместо NSData. Это избавит вас от многих головных болей.

Во-вторых, правило для хранения двоичных данных:

  • <100 КБ хранить в той же таблице, что и соответствующие данные
  • <1 МБ хранить в отдельной таблице, прикрепленной через связь, чтобы избежать ненужной загрузки
  • 1 МБ хранилище на диске и ссылаться на него в Core Data

Update

. Хранилище внутри Core Data должно быть двоичным, и вы можете писать для него методы доступа. Взгляните на этот ответ: Основные изображения данных с рабочего стола на iphone

Обновление

Пример кода, на который я ссылался, описывает, как создавать аксессоры в вашем подклассе NSManagedObject, которые будут преобразовывать изображение туда и обратно между UIImage и двоичные данные.

55
ответ дан 28 November 2019 в 22:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: