0515学习记录
0515学习记录
sethjiang 发表于2年前
0515学习记录
  • 发表于 2年前
  • 阅读 2
  • 收藏 0
  • 点赞 2
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

数据存储的方式  

 

Plist

数组

字典

 

字符串 --> plist文件是可以存的, 但是不是直接支持, 会改变plist文件的  文件格式

 

 

Preference  : 可以理解为 封装的字典

字符串

BOOL 

整数

 

 

归档解档

任何对象都可以直接 保存为文件

 

 

沙盒  就是一个文件夹

 

Documnets   --> 我们需要操作的目录, 备份的时候也会 自动备份

 

Library/Caches    --> 缓存

 

Library/Preference   --> 偏好设置, 一般是由系统自动管理

 

tmp    --> 随时有可能被删除

 

 

使用plist文件存储数据

1. 只支持 数组和字典

2. 字符串可以用plist文件去存储, 但是, 会改变plist文件的文件格式

3. 自定义对象 不能通过plist存储, 没有 writToFile 这个方法

 

获取文件路径

第一种: 

NSString *path = NSHomeDirectory(); // 获取沙盒目录

 

// 拼接 Documnets 和 文件名

NSString *filePath = [path stringByAppendingString:@"/Documents/aa.plist"];

 

// 自动回增加一个 / 

NSString *filePath = [path stringByAppendingPathComponent:@"/Documents/aa.plist"];

 

 

// 直接获取 documents 路径

/**

第一个参数: 要查找的文件夹

第二个参数: 要在哪个目录去找

第三个参数: 是否要展开路径  YES

*/

NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

 

 

// 宏定义, 直接根据文件名称, 拼接文件的绝对路径,

#define kFilePath(fileName) ([NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0] stringByAppendingPathComponent:fileName])

 

 

// writeToFile: 文件绝对路径

// atomically : 原子性 , 保证数据的完成性

[array writeToFile:filePath atomically:YES];

 

 

 

用户偏好 , 只适合, 比较少量的数据, 最好  bool 类型

 

[NSUserDefaults standardUserDefaults]

 

 

// 存数据

// 保存用户名

[defaults setObject:@"dd" forKey:@"name"];

 

// 保存年龄

[defaults setInteger:18 forKey:@"age"];

 

// 是否已婚

[defaults setBool:YES forKey:@"married"];

 

// 存储数据完成之后, 要做一次数据同步

[[NSUserDefaults standardUserDefaults] synchronize];

 

 

// 取数据

NSString *name = [[NSUserDefaults standardUserDefaults] objectForKey:@"name"];

 

NSInteger age = [[NSUserDefaults standardUserDefaults] integerForKey:@"age"];

 

BOOL married = [[NSUserDefaults standardUserDefaults] boolForKey:@"married"];

 

 

 

登录界面: 

 

用户偏好

 

用户名

密码

 

记住密码switch 的状态

自动登录switch 的状态

 

什么情况下, 需要记住用户名和密码? 

1. 当 记住密码的开关为 on 的时候

2. 在验证用户名和密码成功的地方, 将要完成界面跳转 之前  记录用户名和密码

 

 

 

在应用程序启动的时候

1. 对 是否 记住密码 进行判断

返回值 为 YES

1. 填充用户名和密码

2. 修改 记住密码的状态为on

3. 登录按钮为可用状态

 

2. 对  自动登录 做判断

YES

1. 修改自动登录按钮的状态

2. 调用 登录按钮的监听方法

 

 

注销逻辑

1. 清空 textField

2. 恢复按钮的状态 off

3. 禁用登录按钮

4. 用户偏好要清空

 

 

 

ListViewController:

什么时候要进行归档? 

1. 添加

2. 编辑

3. 删除

4. 当点击 注销的时候, 要清空数组, 进行归档

 

只要数据发生了变化, 就需要进行归档

 

 

UITabBarController

 

// 设置控制器vc1 的 title

//    vc1.tabBarItem.title = @"第一个";

    

vc1.title = @"TryTry";

 

// 设置item的image

vc1.tabBarItem.image = [UIImage imageNamed:@"tabbar_contacts"];

 

// 设置imte的被选中的 image

vc1.tabBarItem.selectedImage = [UIImage imageNamed:@"tabbar_contactsHL"];

 

// 设置通知数量

vc1.tabBarItem.badgeValue = @"10";

 

// 向 tabBarController 添加子控制器

[tabBarController addChildViewController:vc1];

 

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

 

 

 

如果在进行push的时候, 要隐藏 tabBar 

从 a  push 到  b 

 

属性要在 控制器b 中设置

 

// 拿到目标控制器

UIViewController *controller = segue.destinationViewController;

 

// 当push的时候, 隐藏掉 tabBar

controller.hidesBottomBarWhenPushed = YES;

标签: iOS 数据存储
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 4
码字总数 3400
评论 (0)
×
sethjiang
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: