1

我正在使用 Facebook 图表将用户的图像加载到 iOS 应用程序。然后将图像放置在 UIView 中以显示它。

如果互联网连接不可用,并且如果互联网可以从 Facebook 获取图像,我想展示相同的图片。

如何保存图像:

  • 到 NSUserDefaults?
  • 核心数据?
  • 到 App 文件夹?

我以后如何检索它?

4

2 回答 2

1

您正在谈论图像缓存 - 请记住,您不能在下载图像时无限存储图像(您的应用程序最终可能会占用太多磁盘空间)。您需要为清除所有这些数据定义一些标准——无论是未使用的数据还是可能过时的数据——这取决于您。有很多方法可以解决缓存问题,只要谷歌一下,我相信你会找到一些有用的东西。

至于存储图像 - 你想要做的是获取 UIImage 的数据(通过使用类似UIImageJpegRepresentationor的函数UIImagePNGRepresentation)。这些函数将返回一个 NSData 实例,该实例可以存储在 NSUserDefaults 中(不是图像缓存的地方),也可以存储在您的 Cache 目录中的文件中(更好,并且不会让 Apple 有充分的理由拒绝您的应用程序的不良存储做法)。

此外,不要意外地尝试在 FBProfilePictureView 实例上调用这些函数 - 这只是 Facebook 创建的用于显示个人资料图片的类(它实际上是一个 UIView,它具有个人资料图像的 UIImageView 子视图。在这个 UIImageView 中,您可以获得UIImage 本身)。如何将 FBProfilePictureView 转换为 UIImage?

祝你好运

于 2013-01-30T15:28:48.057 回答
0

这是使用 NSUserDefaults 缓存的示例

//节省

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:myImage];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:data forKey:@"yourKeyImage"];
[defaults synchronize];

//得到

NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"yourKeyImage"];
NSData *received = [NSKeyedUnarchiver unarchiveObjectWithData:data];
UIImage *image = [UIImage imageWithData:received];
于 2013-01-30T15:40:13.560 回答