写入图片到本地沙盒中

产品的需求是展示用户头像在登录页面,不论是否登录。我的选择是登陆的时候把头像的数据保存到本地沙盒中。打开登录页面的时候先访问沙盒路径,如果有头像,加载展示,没有的话请求数据保存起来。如果用户没有添加头像,展示默认的占位图片。这里主要说下如何写入图片到沙盒中。

//创建属性

@property(nonatomic,strong)UIImageView*headerIMGView;

//主要代码

//写入

[_headerIMGViewsd_setImageWithURL:[NSURL URLWithString:url];

NSData*data = [NSData dataWiturlhContentsOfURL:url];

UIImage*image = [UIImageimageWithData:data];// 取得图片

// 本地沙盒目录

NSString*path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)lastObject];

// 得到本地沙盒中名为"MyImage"的路径,"MyImage"是保存的图片名

NSString*imageFilePath = [pathstringByAppendingPathComponent:@"MyImage"];

NSLog(@"%@", imageFilePath);

// 将取得的图片写入本地的沙盒中,其中0.5表示压缩比例,1表示不压缩,数值越小压缩比例越大

BOOLsuccess = [UIImageJPEGRepresentation(image,0.5)writeToFile:imageFilePathatomically:YES];

if(success){

NSLog(@"写入本地成功");

}else{

NSLog(@"写入本地失败");

}

//读取

NSString*aPath3=[NSStringstringWithFormat:@"%@/Documents/%@.png",NSHomeDirectory(),@"MyImage"];

// 拿到沙盒路径图片

UIImage*imgFromUrl3=[[UIImagealloc]initWithContentsOfFile:aPath3];

_headerIMGView.image= imgFromUrl3;

//理论:

IOS沙盒机制介绍

iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等。

IOS每个应用程序都有自己的三个目录(Document,Library,tmp),他们之间不能相互访问。

Document:存放应用程序的数据 (苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录)。

Library:存储程序的默认设置或其它状态信息。

tmp:应用程序存储临时文件。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 3,721评论 2 7
  • 沙盒SandBox 向沙盒写文件和读文件 文件管理NSFileManager 图片下载 创建文件夹 创建文件 复制...
    iOS_Alex阅读 510评论 0 0
  • 前言: 出于安全考虑,iOS系统的沙盒机制规定每个应用都只能访问当前沙盒目录下面的文件(也有例外,比如系统通讯录能...
    坤哥lqk阅读 2,141评论 0 4
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,211评论 30 472
  • 前言: 出于安全考虑,iOS系统的沙盒机制规定每个应用都只能访问当前沙盒目录下面的文件(也有例外,比如系统通讯录能...
    李sir35阅读 16,328评论 4 19