Я делаю приложение, которое делает фотографии с веб-сайта о некотором Имени пользователя и показывает его в 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];
}
Во-первых, всегда храните изображения в удобный формат, такой как PNG или JPEG вместо NSData. Это избавит вас от многих головных болей.
Во-вторых, правило для хранения двоичных данных:
1 МБ хранилище на диске и ссылаться на него в Core Data
. Хранилище внутри Core Data должно быть двоичным, и вы можете писать для него методы доступа. Взгляните на этот ответ: Основные изображения данных с рабочего стола на iphone
Пример кода, на который я ссылался, описывает, как создавать аксессоры в вашем подклассе NSManagedObject, которые будут преобразовывать изображение туда и обратно между UIImage и двоичные данные.