通讯录 ios

4 篇文章 0 订阅

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值