数据存取,归档和解档,偏好设置

// --- 沙盒路径

// 如何获取沙盒的根目录

NSString* path = NSHomeDirectory();

// 快速查看沙盒目录

// SimPholders2

// 如何获取 doc 路径

NSString* docpath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

// 获取tmp路径

NSString* tmpPath = NSTemporaryDirectory();

// --- plist存储

// plist 存

// array(数组)

NSArray* array = @[ @"abc", @"传智播客" ];

[array writeToFile:filePath atomically:YES];

// dict(字典)

NSDictionary* dict = @{ @"key111" : @"value" };

[dict writeToFile:filePath atomically:YES];

}

// plist 取

// 取数组

NSArray* array = [NSArray arrayWithContentsOfFile:filePath];

NSLog(@"%@", array);

// 取字典

NSDictionary* dict = [NSDictionary dictionaryWithContentsOfFile:filePath];

NSLog(@"%@", dict);

// --- 偏好设置

// 1.偏好设置不需要获取目录(不需要关心文件名)

// 2.NSUserDefaults 是一个单例

// 3.NSUserDefaults 实际上就是苹果帮我们封装好的一个字典

// 4.默认创建的文件名字叫做 bundleid + plist

// 5.字典怎么用 NSUserDefaults 就怎么用

//  记得 加上 同步!!!!!!!!!!!

[ud synchronize];

// 获取偏好设置存储的对象

// 存

NSUserDefaults* ud = [NSUserDefaults standardUserDefaults];

[ud setObject:@"传智播客" forKey:@"key"];

[ud setBool:YES forKey:@"isOn"];

// 取

NSUserDefaults* ud = [NSUserDefaults standardUserDefaults];

NSString* str = [ud objectForKey:@"key"];

NSLog(@"%@", str);

// --- 归档解档

// 归档(存)

[NSKeyedArchiver archiveRootObject:t toFile:filePath];

// 解档(取)

Teacher* t = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];

// filePath 文件名 随便取(保证 存取是一个路径就可以)

// 步骤:

// 1.遵守<NSCoding>的协议

// 2.实现 encode with coder

// 2.1 告诉系统归档哪些属性

// 3.实现 init with coder

// 3.1 判断 self = [super init]

// 3.2 告诉系统需要解档哪些属性(记得给属性赋值)

// 归档数组的时候

// 系统会自动判断里面的元素是什么类型的

// 会去自动寻找当前类型的 <NSCoding> 的两个方法

// --- TabBarController

// 1.添加子控制器

[tab addChildViewController:vc1];

// 2.添加子控制器

tab.viewControllers = @[ vc1, vc2, vc3 ];

// 设置 标题 图片 提醒数字

// vc1.tabBarItem

// tabbar的生命周期 和 nav 不一样

// tabbar 先添加 先显示

// tabbar 先连线 先显示

时间: 2024-10-24 23:17:56

数据存取,归档和解档,偏好设置的相关文章

【IOS学习基础】归档和解档

一.归档介绍 1.归档是指用某种格式来保存一个或多个对象,以便以后还原这些对象的过程.归档是将数据持久化的一种方式(所谓数据持久化,就是指在IOS开发过程中,将数据保存到本地,能够让程序的运行更加流畅). 2.想要归档的数据对象,需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder:方法. 3.归档就是将临时数据保存成本地文件. 4.归档的缺点:归档的形式来保存数据,只能一次性归档保存以及一次性解压.所以只能针对小量数据,而且对数据

【非凡程序员】 OC第十七节课 文件操作二 (归档和解档)

//-----------------------------归档和解档-----(重点)-------.-----------//        //可变的文件流        NSMutableData *nutabdata=[[NSMutableData alloc]init];        //把用归档格式的数据值给可变的文件流        NSKeyedArchiver *keyde=[[NSKeyedArchiver alloc]initForWritingWithMutable

数据存储之plist、偏好设置

// 偏好设置--------------------------------- // 存储基本类型数据 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:@"hello world!" forKey:@"testsavekey"]; // 强制保存,否则需要等系统保存,时间不定 [defaults synchronize]; // 取数据 NS

归档和解档配合NSFile存储数据

NSString *Name = @"yc"; //第一个常量NSDocumentDirectory表示正在查找沙盒Document目录的路径(如果参数为NSCachesDirectory则表示沙盒Cache目录), //第二个常量NSUserDomainMask表明我们希望将搜索限制在应用的沙盒内: NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, Y

归档和解档

归档--encoder    它是将自定义的对象写入磁盘前将对象转成二进制然后存入磁盘. 解档--decoder    它是将磁盘上保存的二进制数据转换成自定义对象. eg: 自定义一个person对象 .h 文件中 @property (nonatomic,copy)NSString *name; @property (nonatomic,assign)int age; .m 文件中 // 归档 - (void)encodeWithCode:(NSCode *)encode { [encode

数据的归档和解归档

//归档 BOOL success = [NSKeyedArchiver archiverRootObject:归档的对象 toFile:文件路径]; //解档 id content =  [NSKeyedUnArchiver unarchiveObjectWithFile:文件路径]; //第二种解归档(多对象) //归档 NSString *homePath = NSHomePath(); NSString *filePath = [homePath stringByAppendingPat

归档和解档---秀清

// // AccountTool.h // // Created by Joe Zhang on 15/5/23. // Copyright (c) 2015年 张秀清. All rights reserved. // #import <Foundation/Foundation.h> #import "Account.h" @interface AccountTool : NSObject //存储账号 +(void)save:(Account *)account; /

浅谈runtim的归档和解档

自定义一个Person类 Person.h里面 #import <Foundation/Foundation.h> //遵循一个NSCoding协议 @interface Person : NSObject<NSCoding> //定义三个person类的属性 @property(strong,nonatomic)NSString *name; @property(assign,nonatomic)int age; @property(strong,nonatomic)NSStri

iOS 文件操作--归档和解档

把自己定义的类所创建的对象直接写入文件的步骤: 自定义类遵循NSCoding协议,实现NSCoding协议中的两个方法: encodeWithCoder:往文件中写入实例变量 initWithCoder:从文件中读取实例变量为当前对象赋值 如果把对象写入文件:调用NSKeyedArchiver中的archiveRootObject:toFile: 如果把对象从文件中读取出来:调用NSKeyedUnarchiver中的unarchiveObjectWithFile: