#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. DDD:四色原型中Role的 “六” 种实现方式

    背景 一个实体在不同的上下文中具备不同的职责,如:产品在“生产完成上下文”中具备的一些职责,在“质检相关上下文”中具备另外一些职责.四色原型.DIC和“UML事物模式”在不同的维度阐述了这一情况,在代 ...

  2. [OpenCV] IplImage and Functions

    In this chapter, APIs will make U crazy. Good luck! Next, Review Linear Algebra.  Ref: http://blog.c ...

  3. JS&CSS文件请求合并及压缩处理研究(二)

    上篇交待了一些理论方面的东西,并给出了另外一种解决方案的处理流程.本篇将根据该处理流程,开始代码方面的编写工作. 1,打开VS,新建ASP.NET MVC Web项目,项目类型选择空.名称为 Mcmu ...

  4. springMVC基础

    controllers包写控制器: @Controller @RequestMapping(value="/utils") public class UploadControlle ...

  5. SQL Server里如何随机记录集

    今天的文章,我想给你简单介绍下SQL Server里如何随机记录集. SELECT * FROM Person.Person ORDER BY NEWID() GO 这会引入新的UNIQUEIDENT ...

  6. 更加优雅地搭建SSH框架(使用java配置)

    时代在不断进步,大量基于xml的配置所带来的弊端也显而易见,在XML配置和直接注解式配置之外还有一种有趣的选择方式-JavaConfig,它是在Spring 3.0开始从一个独立的项目并入到Sprin ...

  7. IOS开发UI基础UITableView的属性

    UITableView UITableView内置了两种样式:UITableViewStylePlain,UITableViewStyleGrouped <UITableViewDataSour ...

  8. Qt之QAbstractItemView右键菜单

    一.功能概述 说起右键菜单,之前Qt之自定义QLineEdit右键菜单这篇文章中我已经讲述过3种右键菜单的实现方式,今儿也是在啰嗦一下,针对QListWidget类在定制一下右键菜单,我使用的具体方式 ...

  9. ASP.NET运行时详解 集成模式和经典模式

    遗留问题 在<ASP.NET运行时详解 生命周期入口分析>中遗留两个问题,包括Application的InitInternal方法执行细节.IIS6和II7经典模式请求管道管理类Appli ...

  10. 【JavaScript回顾】继承

    组合继承 组合继承(combination inheritance),有时候也叫做伪经典继承,指的是将原型链和借用构造函数的 技术组合到一块,从而发挥二者之长的一种继承模式.其背后的思路是使用原型链实 ...