#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的数据存储的更多相关文章

  1. NSData NSDate NSString NSArray NSDictionary 相互转换

    // NSData NSDate NSString NSArray NSDictionary json NSString *string = @"hello word"; NSDa ...

  2. NSData NSDate NSString NSArray NSDictionary 相互转化

    //    NSData  NSDate NSString NSArray NSDictionary json NSString *string = @"hello word"; ...

  3. Fouandation(NSString ,NSArray,NSDictionary,NSSet) 中常见的理解错误区

    Fouandation 中常见的理解错误区 1.NSString //快速创建(实例和类方法) 存放的地址是 常量区 NSString * string1 = [NSString alloc]init ...

  4. iOS 应用数据存储的常用方式

    iOS 开发中,经常会有将数据存储到本地的需求.比如一些数据的缓存,或者记录下用户的账号密码,记录下下次是否自动登录等,这些都需要将数据记录到本地.iOS中,数据存储到本地的常见方式有三种: 一: 使 ...

  5. iOS笔记———数据存储

    应用沙盒:应用文件系统的根目录,每个应用都有独自的沙盒相互:在xcode中可以用NSHomeDirectory()函数,打印当前应用的沙盒根路径. 应用程序包:包含了所有资源文件和执行文件; * Do ...

  6. [MISS静IOS开发原创文摘]-AppDelegate存储全局变量和 NSUserDefaults standardUserDefaults 通过模型保存和读取数据,存储自定义的对象

    由于app开发的需求,需要从api接口获得json格式数据并保存临时的 app的主题颜色 和 相关url 方案有很多种: 1, 通过AppDelegate保存为全局变量,再获取 2,使用NSUSerD ...

  7. 【iOS-Android开发对照】之 数据存储

    [iOS-Android开发对照]之 数据存储 写在前面的话 相比Android和iOS,我认为Android的数据存储更开放一些.Android天生就能够使用多Java I/O:并且天生开放的特性, ...

  8. ios开发之--NSDictionary和NSData之间的互转/NSString和NSData之间的互转

    NSDictionary转NSData,代码如下: +(NSData*)returnDataWith:(NSDictionary*)dict { NSData *data = [NSJSONSeria ...

  9. iOS 应用数据存储方式(XML属性列表-plist)

    iOS 应用数据存储方式(XML属性列表-plist) 一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存储自定义对象) ...

随机推荐

  1. MyBatis XML 映射配置文件

    配置文件的基本结构 configuration —— 根元素 properties —— 定义配置外在化 settings —— 一些全局性的配置 typeAliases —— 为一些类定义别名 ty ...

  2. Registering iOS Devices for Testing - 注册测试设备

    http://support.smartbear.com/viewarticle/63764/ Applications developed using the iOS Developer Progr ...

  3. java--实现将文字生成二维码图片,并在中间附上logo,下方附上文字

    前段时间因为工作需要,要实现将一段文字或者url生成二维码,然后中间附上logo,下方正中间附上文字的功能. 上网找了几篇教程学习了下,由于没有保存借鉴的博文链接,所以就没po上参考文章的链接啦,感谢 ...

  4. 关于VR技术和未来发展---转

    原文地址:http://mp.weixin.qq.com/s?__biz=MzA4MTIwNTczMQ==&mid=2651345594&idx=3&sn=2741ab7321 ...

  5. 下载image或者其他文件

    public void SaveDownLoadAsPNG(Image img, string filePath) { try { WebRequest request = WebRequest.Cr ...

  6. js代码中的闭包

    作为一个后台开发人员了解前端非常重要,尤其是深处学校实验室做项目时前端把写好的代码直接给你,然后你在修改的时候.我经常做的就是修改前端的代码的HTML和后台交互的部分以及js的ajax部分,之后修改之 ...

  7. RequireJS 模块化加载框架使用

    RequireJS 是一个遵循 AMD 规范的模块化加载框架 与上文seajs一样,这里简单介绍其相关用法 同样的,首先是下载好 require.js --> http://requirejs. ...

  8. 循序渐进开发WinForm项目(4)--Winform界面模块的集成使用

    随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了. 其实也许我 ...

  9. Winform开发框架之客户关系管理系统(CRM)的开发总结系列2-基于框架的开发过程

    在上篇随笔<Winform开发框架之客户关系管理系统(CRM)的开发总结系列1-界面功能展示>中介绍了我的整个CRM系统的概貌,本篇继续本系列的文章,介绍如何基于我的<winform ...

  10. Python入门笔记(15):对文件的操作(1)

    一.文件对象 我理解的文件对象就是一个接口,通过这个接口对文件进行相关操作. <Python 核心编程>上说的很晦涩,这里没有深刻理解到,希望有人能解释给我听. >>> ...