1.输入改变 使能
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
//添加观察者
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.nameField];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.pwdField];
//读取上次的配置 单例- (记录密码 账号 需要)
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
self.nameField.text = [defaults valueForKey:UserNameKey];
self.pwdField.text = [defaults valueForKey:PwdKey];
self.rembSwitch.on = [defaults boolForKey:RmbPwdKey];
if(self.rembSwitch.isOn)
{
self.pwdField.text = [defaults valueForKey:PwdKey];
self.loginBtn.enabled = YES;
}
}
//输入改变方法
- (void) textChange
{
self.loginBtn.enabled = (self.nameField.text.length && self.pwdField.text.length);
}
2.存储的几种类型
#define ContactFilePath [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"contacts.data"]
//数组加载
======
(NSMutableArray *)contactArr{
if(!_contactArr){
//读取数据
_contactArr = [NSKeyedUnarchiver unarchiveObjectWithFile:ContactFilePath];
if (_contactArr == nil)
{
_contactArr = [NSMutableArray array];
}
}
return _contactArr;
}
//读取数据啊 数组里面的
-------------
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Mycell" ];
contactModel *ctmodel = self.contactArr[indexPath.row];
cell.textLabel.text = ctmodel.name;
cell.detailTextLabel.text = ctmodel.phone;
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
return cell;
}
pragma mark - UITableView delegate
==================================
(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if(editingStyle == UITableViewCellEditingStyleDelete)
{
//1.删除数据模型
[self.contactArr removeObjectAtIndex:indexPath.row];
//2.刷新表视图
[self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationTop];
**//3.归档
[NSKeyedArchiver archiveRootObject:self.contactArr toFile:ContactFilePath];**
}
}
pragma mark - EditVC delegate
=============================
(void)editViewController:(EditViewController *)editVc didSaveContact:(contactModel *)model
{
[self.tableView reloadData];
**//归档
[NSKeyedArchiver archiveRootObject:self.contactArr toFile:ContactFilePath];**
}
3.数据 模型
contact model
#import "contactModel.h"
@implementation contactModel
/*
将某个对象写入文件时候会调用
在这个方法中说清楚哪些属性需要存储
*/
- (void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:self.name forKey:@"name"];
[encoder encodeObject:self.phone forKey:@"phone"];
}
/*
解析对象会调用这个方法
需要解析哪些属性
*/
- (id)initWithCoder:(NSCoder *)decoder
{
if(self = [super init])
{
self.name = [decoder decodeObjectForKey:@"name"];
self.phone = [decoder decodeObjectForKey:@"phone"];
}
return self;
}
@end