简单数据的本地持久化

来源:互联网 发布:照片变油画软件 编辑:程序博客网 时间:2024/05/29 04:45

pragma mark - 将NSString类型的数据存储到本地

//1. 需要知道这个对象存在哪里  所以需要一个文件夹的路径NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];//2.创建要存储的内容NSString *str = @"AJAR";//3.要知道字符串最终要存储的地方  所以需要创将一个路径去存储字符串NSString *strPath = [documentPath stringByAppendingPathComponent:@"zhangming.txt"];//4. 将字符串写入文件//第一个参数:写入的文件的一个路径[str writeToFile:strPath atomically:YES encoding:NSUTF8StringEncoding error:nil]; NSLog( @"strPath = %@", strPath);

pragma mark - 将NSString文件夹存储的内容取出来

//将字符串取出//第一个参数 字符串存储的路径//第二个参数 编码格式//第三个参数 错误信息NSString *newStr = [NSString stringWithContentsOfFile:strPath encoding:NSUTF8StringEncoding error:nil];NSLog( @"newStr = %@", newStr); */

pragma mark - 将NSArray 类型的数据存贮到本地

/* //1 找到Documents文件夹
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
//2 创建需要存贮的数组
NSArray *array = @[@”black”, @”mbBoy”, @”bpy”, @”spy”, @”SeaRoot”];
// 3 创建数组存储的最终路径
NSString *arrayPath = [documentPath stringByAppendingPathComponent:@”BJS.plist”];
// 4 写入本地
[array writeToFile:arrayPath atomically:YES];
NSLog(@”array = %@”, array);

//将存在本地的数组取出NSArray *newArray = [NSArray arrayWithContentsOfFile:arrayPath];NSLog(@"newArray = %@", newArray); */

pragma mark - 将NSDictionary类型的数据存储到本地

NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];NSDictionary *dict = @{                       @"name" : @"zhangsan",                       @"gender" : @"man",                       @"age" : @18                       };NSString *dictPath = [documentPath stringByAppendingString:@"/BJS.plist"];[dict writeToFile:dictPath atomically:YES];NSDictionary *newDict = [NSDictionary dictionaryWithContentsOfFile:dictPath];NSLog(@"newDict = %@", newDict); 

pragma mark - 将NSData类型的数据存储到本地(以图片为例)

//常用的两种初始化image的两种方式// 使用imageNamed 第一次读取的时候 先把这个图片放到缓存里 下次使用到这个同名图片的时候直接从缓存中读取 优点:方便快捷 只有第一次使用的时候稍慢 接下来再使用就会稍微快点 ;缺点:但如果在当前工程中只使用一次会浪费内存

// UIImage image = [UIImage imageNamed:<#(nonnull NSString )#>];
// 使用inintWithContentsOfFile初始化图片的时候, 每次都会根据路径去读取 不会占用内存 如果图片在工程中只是用一次 应该选择这个方法
UIImage *image = [UIImage imageNamed:@”v_red_heart_selected”];
//将image类型的对象转换成NSData类型的数据进行存储
//使用UIImageJPEGRepresentation将图片转换成NSData类型的
//第一个参数 要转换的image对象
//第二个参数 表示图片压缩的值
//iphone中降大于2M的图片 会自动旋转90度 进行压缩处理 存为jpeg格式
NSLog(@”%@”, image);
NSData *imageData = UIImageJPEGRepresentation(image, 1);
//找到路径进行存储
NSString *doucmentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
// 最终路径
NSString *imagePath = [doucmentPath stringByAppendingString:@”/123.jpeg”];
[imageData writeToFile:imagePath atomically:YES];
NSLog(@”%@”, imagePath);

// 读取NSData类型的数据// 需求:将NSData类型的数据读取出来 转换成UIImage类型并显示在imageView上NSData *newData = [NSData dataWithContentsOfFile:imagePath];UIImage *showImage = [[UIImage alloc] initWithData:newData];UIImageView *showImageVIew = [[UIImageView alloc] initWithImage:showImage];
0 0
原创粉丝点击