NSString、NSArray、NSDictionary和NSData的数据存储
#import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; #pragma mark - 简单对象的本地持久化
#pragma mark - 将NSString类型的数据存储到本地 // 1.需要知道这个对象存在哪里,所以需要一个文件夹的路径
// 找到Documents文件夹路径
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:]; // 2.我们知道要存储什么?所以创建要存储的内容
// 创建要存储的内容:字符串
NSString *str = @"AJAR"; // 3.需要知道字符串最终存储的地方,所以需要创建一个路径去存储字符串
NSString *strPath = [documentPath stringByAppendingPathComponent:@"yinhao.txt"];
NSLog(@"%@", strPath); // 4.准备工作完成,将字符串写入文件
// 第一个参数:写入的文件的路径
// 第二个参数:在断电的时候,会不会自动保存
[str writeToFile:strPath atomically:YES encoding:NSUTF8StringEncoding error:nil]; // 将字符串取出:stringWithContentsOfFile这个函数将其取出
// 第一个参数:字符串存储的路径
// 第二个参数:编码格式
// 第三个参数:错误信息
NSString *newStr = [NSString stringWithContentsOfFile:strPath encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@", newStr); #pragma mark - 将NSArray类型的数据存储到本地 // 1.找到Documents文件夹路径
NSString *documentPath1 = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:]; // 2.创建一个数组
NSArray *array = @[@"Black", @"MBBoy", @"BPY", @"SPY", @"SeaRoot", @"BOOM"]; // 3.创建数组存储的最终路径
NSString *arrayPath = [documentPath1 stringByAppendingPathComponent:@"yinhao.plist"]; // 4.写入本地
[array writeToFile:arrayPath atomically:YES];
NSLog(@"%@", arrayPath); // 将存储在本地的数据取出
NSArray *newArray = [NSArray arrayWithContentsOfFile:arrayPath];
NSLog(@"%@", newArray); #pragma mark - 将NSDictionary类型的数据存储到本地 // 1.找到Documents文件夹路径
NSString *documentPath2 = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:]; // 2.创建一个字典
NSDictionary *dictionary = @{@"name" : @"yinhao", @"gender" : @"man", @"age" : @"", @"hobby" : @"NBA"}; // 3.创建字典存储的最终路径
NSString *dictionaryPath = [documentPath2 stringByAppendingPathComponent:@"zhizunbao.plist"]; // 4.写入本地
[dictionary writeToFile:dictionaryPath atomically:YES];
NSLog(@"%@", dictionaryPath); // 将存储在本地的数据取出
NSDictionary *newDict = [NSDictionary dictionaryWithContentsOfFile:dictionaryPath];
NSLog(@"%@", newDict); #pragma mark - 将NSData类型的数据存储到本地(以UIImage为例) // 常用的两种初始化image的方式
// imageNamed:第一次使用的时候,先把这个照片放到缓存里,下次使用到这个同名图片的时候直接从缓存中读取;优点:方便快捷,只有第一次使用的时候稍慢,接下来再使用就会稍微快点;缺点:如果在当前的工程中只使用一次会浪费内存
// initWithContentsOfFile:每次都会根据路径去读取,不会占用内存,如果图片在当前工程中只使用;一次,应该选择这个方法 UIImage *image = [UIImage imageNamed:@"000.jpg"];
// UIImage *image = [[UIImage alloc] initWithContentsOfFile:@"路径"]; /*
123.png
123@2x.png
123@3x.png
图片适配的相关内容
*/ // 将image类型的对象转换成NSData类型的数据进行存储
// 使用UIImageJPEGRepresentation将图片转换为NSData类型的数据
// 第一个参数:要转换的image对象
// 第二个参数:表示图片压缩的值
// iPhone中将大于2Md图片,会自动旋转90度,所以最终会将图片保存成jpeg格式的图片
NSData *imageData = UIImageJPEGRepresentation(image, 1.0); // 找到路径进行存储
NSString *documentPath3 = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:]; // 最终路径
NSString *imagePath = [documentPath3 stringByAppendingPathComponent:@"123.jpeg"]; // 将imageData写入
[imageData writeToFile:imagePath atomically:YES];
NSLog(@"%@", imagePath); // 读取NSData类型的数据
// 需求:将NSData类型的数据读取出来,转换成UIImage类型的数据显示在imageView上;
NSData *newData = [NSData dataWithContentsOfFile:imagePath];
UIImage *showImage = [UIImage imageWithData:newData]; UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(, , self.view.frame.size.width - , self.view.frame.size.height - )];
[self.view addSubview:imageView];
imageView.image = showImage; }
@end
NSString、NSArray、NSDictionary和NSData的数据存储的更多相关文章
- NSData NSDate NSString NSArray NSDictionary 相互转换
// NSData NSDate NSString NSArray NSDictionary json NSString *string = @"hello word"; NSDa ...
- NSData NSDate NSString NSArray NSDictionary 相互转化
// NSData NSDate NSString NSArray NSDictionary json NSString *string = @"hello word"; ...
- Fouandation(NSString ,NSArray,NSDictionary,NSSet) 中常见的理解错误区
Fouandation 中常见的理解错误区 1.NSString //快速创建(实例和类方法) 存放的地址是 常量区 NSString * string1 = [NSString alloc]init ...
- iOS 应用数据存储的常用方式
iOS 开发中,经常会有将数据存储到本地的需求.比如一些数据的缓存,或者记录下用户的账号密码,记录下下次是否自动登录等,这些都需要将数据记录到本地.iOS中,数据存储到本地的常见方式有三种: 一: 使 ...
- iOS笔记———数据存储
应用沙盒:应用文件系统的根目录,每个应用都有独自的沙盒相互:在xcode中可以用NSHomeDirectory()函数,打印当前应用的沙盒根路径. 应用程序包:包含了所有资源文件和执行文件; * Do ...
- [MISS静IOS开发原创文摘]-AppDelegate存储全局变量和 NSUserDefaults standardUserDefaults 通过模型保存和读取数据,存储自定义的对象
由于app开发的需求,需要从api接口获得json格式数据并保存临时的 app的主题颜色 和 相关url 方案有很多种: 1, 通过AppDelegate保存为全局变量,再获取 2,使用NSUSerD ...
- 【iOS-Android开发对照】之 数据存储
[iOS-Android开发对照]之 数据存储 写在前面的话 相比Android和iOS,我认为Android的数据存储更开放一些.Android天生就能够使用多Java I/O:并且天生开放的特性, ...
- ios开发之--NSDictionary和NSData之间的互转/NSString和NSData之间的互转
NSDictionary转NSData,代码如下: +(NSData*)returnDataWith:(NSDictionary*)dict { NSData *data = [NSJSONSeria ...
- iOS 应用数据存储方式(XML属性列表-plist)
iOS 应用数据存储方式(XML属性列表-plist) 一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存储自定义对象) ...
随机推荐
- MyBatis知多少(15)数据模型
瘦数据模型是一种最为臭名昭著并且问题多多的对关系数据库系统的滥用.不幸的是,有时又的确需要瘦数据模型.所谓瘦数据模型,就是简单地将每张表都设计为一种通用数据结构,用于存储名值对的集合.这非常像Java ...
- Vim 插件之 NERDTree
设置快键键 编辑 .vimrc 添加以下内容后,可以使用 ctrl + n 来开关 NERDTree 插件. map <silent> <C-n> :NERDTreeToggl ...
- codeforces Restore Cube(暴力枚举)
/* 题意:给出立方体的每个顶点的坐标(是由源坐标三个数某几个数被交换之后得到的!), 问是否可以还原出一个立方体的坐标,注意这一句话: The numbers in the i-th output ...
- MongoDB的学习--文档的查询
继续关于<MongoDB权威指南>记录,今天的内容是文档的查询~~ MongoDB官网地址:http://www.mongodb.org/ 我使用的是MongoDB 2.4.8 find函 ...
- Android 学习笔记之如何使用SQLite数据库来保存数据...
PS:最近一阵子都在为考试复习...坑爹的计算机网络,复习了3天,最后该不会的还是不会...明天还考英语...真蛋疼... 学习内容: 1.使用SQLite数据库来保存数据... SQLite: ...
- UWP开发入门(十三)——用Diagnostic Tool检查内存泄漏
因为.NET的垃圾回收机制相当完善,通常情况下我们是不需要关心内存泄漏的.问题人一但傻起来,连自己都会害怕,几个页面跳啊跳的,内存蹭蹭的往上涨,拉都拉不住.这种时候我们就需要冷静下来,泡一杯热巧克力. ...
- Linux永久修改系统时间和时区方法
修改时区: 1> 找到相应的时区文件 /usr/share/zoneinfo/Asia/Shanghai 用这个文件替换当前的/etc/localtime文件. 或者找你认为是标准时间的服务器, ...
- Gradle学习系列之三——读懂Gradle语法
在本系列的上篇文章中,我们讲到了创建Task的多种方法,在本篇文章中,我们将学习如何读懂Gradle. 请通过以下方式下载本系列文章的Github示例代码: git clone https://git ...
- 安装jdk For Windows
1.下载JDK查看最新:http://www.oracle.com/technetwork/java/javase/downloads/index.html根据操作系统选择合适的JDK进行下载2.运行 ...
- java内部类的使用
内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类 如同一个人是由大脑.肢体.器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液.跳动) 显然, ...