Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在iOS应用程序中保存用户头像_Php_Ios_Ios7 - Fatal编程技术网

Php 如何在iOS应用程序中保存用户头像

Php 如何在iOS应用程序中保存用户头像,php,ios,ios7,Php,Ios,Ios7,我的应用程序从PHP json回复中检索图像,但是如何在我的应用程序上存储用户化身?在我以前的工作中,我总是需要存储用户名,而我只是使用NSUserDefaults来存储用户名。 我读过NSCoding实现,但我不了解完整的流程,有人能给我解释一下吗 我的目标是存储该图像以便快速显示(我需要在每个视图中显示),而不是每次都从服务器加载该图像 谢谢一旦有了图像,您就可以使用uiimagejpegresentation或UIImagePNGRepresentation获取图像数据。获得图像数据后,可

我的应用程序从PHP json回复中检索图像,但是如何在我的应用程序上存储用户化身?在我以前的工作中,我总是需要存储用户名,而我只是使用NSUserDefaults来存储用户名。
我读过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];
    }
}