WXHL 学习文章连载 (十)
来源:互联网 发布:php获取ip地理位置 编辑:程序博客网 时间:2024/06/08 19:54
自习了一点数据存储方面的知识,来回顾一下。。
一、三种本地存储方式
一)"plist文件存储"
1.字符串 数组 字典 可以直接存储数据在一个文件
2.不是所有对象都可以保存到plist文件中,要有实现writeFile方法才可以
3.SimPholders2快速打开沙盒目录
二)"用户偏好设置"
1.ios中有个NSUserDefaults对象有可保存数据,我们称为用户偏好设置
2.通过[NSUserDefaults standardUserDefaults]可以获取用户偏好设置对象,保存字符串 布尔值 int等数据
3.保存数据时,一定要调用synchronize,因为数据要及时保存到沙盒的文件中
4.用户偏好设置数据的获取,更改,删除
三)"NSKeyedArchiver归档"
/*什么叫归档 归档就是把数据保存到一个文件中*/
1.使用NSKeyedArchiver可以将NSArray NSDictiony NSString等对象归档到一个文件
2.只有实现了NSCoding协议的对象才可使用NSKeyedArchiver进行归档
3.将模型对象保存到一个文件时,对象要遵守NSCoding协议,并实现NSKeyedArchiver的encodeWithCoder方法,
4.从归档文件里读取对象时要实现NSCoding的initWithCoder方法
5.ios中,控制器,控件都继承NSCoding,storyboard/xib都是使用NSKeyedArchiver进行归档的
--------------------------案---例---------------------------
简单的个人通讯录。
一、"【登录界面】"
1.使用UIStoryboardSegue对象
(1)在storyboard中,可以通过连线完成多个界面间的跳转,每一连线我们称为segue
(2)storyboard中的segue连线有两种,一是自动跳转、二是手动跳转
(3)使用代码跳转页面手动segue -->【[self performSegueWithIdentifier:@"contactSegue" sender:nil];】
2.第三方MBProgressHUD的使用,给用户一个友好的提示
3.控制器的数据传递
(1) 在控制器的【-(void)prepareForSegue:sender:】的方法中获取目标控制器
(2) 设置目标控制器的属性,可以实现数据的传递
4.文件框文字改变的监听
方法1 使用通知中心
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.passwordField];
方法2 往文本输入框添加事件
【addTarget: action: forControlEvents:UIControlEventEditingChanged】
方法3 storybaord连线
5.记住密码与自动登录逻辑
(1)记住密码为关闭的情况下,如果自动登录为开启状态,应该关闭
(2)如果自动登录为关闭状态,记住密码必需为开启状态
二、"【添加联系人页面】"
1.数据的逆向传递
(1)如果想向上一个控制器传递数据,可以使用代理的方法
(2)向上个控制器传递数据时,可以传递字符串或者模型
2.表格的局部刷新,性能更好,使用【self.tableView insertRowsAtIndexPaths:withRowAnimation:】方法
三、"【编辑联系人】"
1.使用代理的方法通知上一个控制器联系个编辑完成,并保存
2.刷新数据使用局部刷新【[self.tableView reloadRowsAtIndexPaths:withRowAnimation】
四、完善通讯录的登录页面数据存储与联系人信息存储
1.登录页面使用 "用户偏好" 来存储数据
2.联系人页面使用 "归档" 来存储数据
五、删除联系人/随机添加联系人
1.掌握表格的编辑状态
*表格有个editing属性,可以打开cell的删除或者添加状态
*指定表格的编辑状态,可以实现代理方法
/**
表格的编辑状态
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
//第一行返回的编辑状态为添加
if (indexPath.row == 0) {
return UITableViewCellEditingStyleInsert;
}
//其它行返回的编辑状态为删除
return UITableViewCellEditingStyleDelete;
}
*/
*如果要监听表格绿色与红色按钮的点击,只要实现一个代理方法即可,如下
/*
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
if (editingStyle == UITableViewCellEditingStyleInsert) {//添加
}else{//删除
}
}
*/
六、实现联系人表格cell的分隔线
(1)系统的分隔线不好看,去除表格自带的分隔线
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
(2)自定义cell,在awakeFromNib方法中添加分隔线
(3)在layoutsubviews中设置分隔线的frm
七、注销使用UIActionSheet
-------------------部分代码以及运行结果--------------
- WXHL 学习文章连载 (十)
- WXHL 学习文章连载 (十六)
- WXHL 学习文章连载十二
- WXHL 学习文章连载十三
- WXHL学习文章连载 十四
- WXHL 学习总结连载(三)
- WXHL 学习总结连载(四)
- WXHL 学习总结连载(八)
- WXHL 学习总结连载(九)
- WXHL 学习总结连载(六)
- WXHL 学习总结连载 十一
- wxhl ios bj 49期 张浩 学习文章连载 第9章
- WXHL学习总结(五)
- WXHL 学习总结(七)
- wxhl ios bj 49期 张浩 学习心得体会文章连载 第六章
- wxhl ios bj 49期 张浩 学习心得体会文章连载 第7章
- wxhl bj ios 49期 张浩 学习心得体会文章连载 第8章
- wxhl iOS bj 49 张浩 学习心得文章连载 第11章
- 动态添加碎片
- 标准模板库STL学习总结
- Hello JSP!——内置对象基础练习题
- 解决td.innerHTML赋值出现发生未知错误
- Android Asynctask
- WXHL 学习文章连载 (十)
- codefroces round 320 div2 题解
- Android studio改变字体大小
- Eclipse常用快捷键
- *HDU 4427 - Math Magic(dp)
- ReactiveCocoa与Functional Reactive Programming
- js之location对象
- 二叉树的遍历-递归与非递归 - 海子
- 使用oracle遇到的相关函数