Php 如何在iOS应用程序中保存用户头像
我的应用程序从PHP json回复中检索图像,但是如何在我的应用程序上存储用户化身?在我以前的工作中,我总是需要存储用户名,而我只是使用NSUserDefaults来存储用户名。Php 如何在iOS应用程序中保存用户头像,php,ios,ios7,Php,Ios,Ios7,我的应用程序从PHP json回复中检索图像,但是如何在我的应用程序上存储用户化身?在我以前的工作中,我总是需要存储用户名,而我只是使用NSUserDefaults来存储用户名。 我读过NSCoding实现,但我不了解完整的流程,有人能给我解释一下吗 我的目标是存储该图像以便快速显示(我需要在每个视图中显示),而不是每次都从服务器加载该图像 谢谢一旦有了图像,您就可以使用uiimagejpegresentation或UIImagePNGRepresentation获取图像数据。获得图像数据后,可
我读过NSCoding实现,但我不了解完整的流程,有人能给我解释一下吗 我的目标是存储该图像以便快速显示(我需要在每个视图中显示),而不是每次都从服务器加载该图像
谢谢一旦有了图像,您就可以使用
uiimagejpegresentation
或UIImagePNGRepresentation
获取图像数据。获得图像数据后,可以使用writeToFile:options:error:
将其保存到磁盘。之后,您可以使用UIImage initWithContentsOfFile:
加载它
现在,您只需存储图像保存位置(硬编码或用户默认设置)。您可以将图像写入文件系统,ios中的每个应用程序都有文档文件夹。您还可以将coredata中的图像保存为二进制对象,如NSData。除此之外,您还可以将其保存到文件系统中,并将url保存到数据库中 启动时,将映像加载到内存中,并在任何视图中使用它。这将是最好的。若你们正在从服务器上加载avtar,那个么你们的头像可能会被改变。您可以从服务器加载头像并将其缓存,以便在会话中再次尝试访问该图像时,不需要从服务器获取该图像。扩展UIImageView(创建类别)并使用此代码。也使用
它检查映像是否已下载,如果未下载,则将存储映像并从磁盘读取。如果已经下载,也会从磁盘读取。谢谢!工作起来就像一个字符。谢谢你的回答,但是我读到用用户默认值存储imageRepresentation并不是最好的解决方案。@AlessandroLucarini,我说的是用用户默认值存储磁盘上图像的路径,而不是图像本身。。。这基本上就是所有答案所说的。
- (void)setDownloadedImage:(NSString *)imageName{
NSString *libraryPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
NSString *localImagePath = [libraryPath stringByAppendingPathComponent:imageName];
// Check if the image is already downloaded
if (![[NSFileManager defaultManager] fileExistsAtPath:localImagePath]) {
// Store image
NSURL *serverFilePath = [NSURL URLWithString:[NSString stringWithFormat:@"%@/images/avatars/%@", SERVER_URL, imageName]];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSData *imageData = [NSData dataWithContentsOfURL:serverFilePath];
[imageData writeToFile:localImagePath atomically:YES];
// Switch back to the main thread to update the UI
dispatch_sync(dispatch_get_main_queue(), ^{
[self setImageWithURL:[NSURL fileURLWithPath:localImagePath] placeholderImage:nil];
});
});
}
else{
[self setImageWithURL:[NSURL fileURLWithPath:localImagePath] placeholderImage:nil];
}
}