在iOS/OS X 的文档中,Parse 举了一个例子。
取回图像涉及调用 PFFile 上的 getData 变体之一。在这里,我们从另一个名为 anotherPhoto 的 UserPhoto 中检索图像文件:
PFFile *userImageFile = anotherPhoto[@"imageFile"];
[userImageFile getDataInBackgroundWithBlock:^(NSData *imageData, NSError *error) {
if (!error) {
UIImage *image = [UIImage imageWithData:imageData];
}
}];
现在,我不太明白你使用 NSInputStream 的原因,主要有两个原因:
- NSInputStream 应该是用于输入数据,而不是从某个地方获取它
- NSInputStream 用于流式传输,因此对于您想要对传入的数据执行某些操作的场景,根据您的描述,您似乎只在数据完成下载后才关心数据。
简而言之,您应该使用上述方式,除非您真正关心数据的加载方式,例如想要在数据进入时对其进行操作(在您描述的情况下极不可能)。
至于一次将所有内容都保存在内存中,您提供的尺寸并没有那么大,是的,您可以将其流式传输到文件中,但假设您想在应用程序中显示它的全尺寸,内存问题会出现在某些地方尽管如此,你只会推迟不可避免的事情。如果不是这种情况(不显示全尺寸),那么最好将源图像切成小块并使用它们,这样可以更快地下载特定的图块并且更容易占用内存。