Erc*_*can 24 iphone image core-data
我正在制作一个应用程序,从网站上获取一些用户名的照片,并在用户名的UITable中显示,然后点击用户名,它显示该用户的照片,然后点击它显示全屏照片的照片名称.
我的问题是我正在使用NSData从互联网上获取照片.我是否必须将数据保存到CoreData?当按下用户名时,它会创建NSData并从互联网下载照片并在UITable上显示.这需要时间.
什么是好方法?以及如何将此图像保存到CoreData?
我正在使用这种方法
NSData *imageData=[flickr dataForPhotoID:firstPhoto.id fromFarm:firstPhoto.farm
onServer:firstPhoto.server withSecret:firstPhoto.secret inFormat:
FlickrFetcherPhotoFormatSquare];
Run Code Online (Sandbox Code Playgroud)
这里定义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];
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*rra 55
首先,始终以PNG或JPEG等可用格式存储图像,而不是NSData.这将为您节省很多麻烦.
其次,存储二进制数据的规则是:
1mb存储在磁盘上并在Core Data中引用它
Core Data中的存储应该是二进制的,您可以为它编写访问器方法.看看这个答案:从桌面到iphone的核心数据图像
我链接的示例代码描述了如何在NSManagedObject子类中创建访问器,它将在UIImage和二进制数据之间来回转换图像.