#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. 自己动手搭建 MongoDB 环境,并建立一个 .NET HelloWorld 程序测试

    关于 MongoDB,下面来自百度百科: MongoDB[1]是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.   mongoDB[1] Mon ...

  2. SuperSocket 1.6.4 通过FixedHeaderReceiveFilter解析自定义协议

    SuperSocket 提供了一些通用的协议解析工具, 你可以用他们简单而且快速的实现你自己的通信协议: TerminatorReceiveFilter (SuperSocket.SocketBase ...

  3. css3,background-clip/background-origin的使用场景,通俗讲解

    先不说background-clip/background-origin的用法,我们先来聊聊css背景方面的知识. <!DOCTYPE html> <html lang=" ...

  4. html5 自定义数据属性 ,也就是 data-* 自定义属性---笔记。

    html5  自定义数据属性 ,也就是 data-* 自定义属性.  例如 <div data-last-value="43" data-hidden="true& ...

  5. ASP.NET MVC数组模型绑定

    在ASP.NET MVC中使用Razor语法可以在视图中方便地展示数组,如果要进行数组模型绑定,会遇到索引断裂问题,如下示例: <input type="text" name ...

  6. 斜堆(二)之 C++的实现

    概要 上一章介绍了斜堆的基本概念,并通过C语言实现了斜堆.本章是斜堆的C++实现. 目录1. 斜堆的介绍2. 斜堆的基本操作3. 斜堆的C++实现(完整源码)4. 斜堆的C++测试程序 转载请注明出处 ...

  7. Tips5:通过 alt+鼠标左键 来完全展开或收缩层级

    通过 alt+点击 可以完全地展开或关闭unity中的各种层级关系,包括Hierarchy视图 或 Project视图中的. 上图中,第一次点击没有按住ALT键,可以发现子项目并没有被展开,而第二次是 ...

  8. 使用 PSD Validator 在线校验 PSD 文件的质量

     PSD Validator 可以帮助你在线校验 PSD 文件的质量,使用的规则来自 Photoshop Etiquette.Photoshop Etiquette 整理了 PSD 文件的规范,例如删 ...

  9. ASP.NET中WebService的两种身份验证方法

    一.通过SOAP Header身份验证 此方法是通过设置SOAP Header信息来验证身份,主要通过以下几步: 1.在服务端实现一个SOAP Header类 public class Credent ...

  10. SQL中的循环

    DECLARE @SOInfoList TABLE ( SONumber INT, SODate datetime, Status char(1) ) INSERT INTO @SOInfoList ...