iOS开发-------Sqlite3实现本地存储简易通讯录

        最近几天整了下Sqlite3,也就是iOS的另外一种储存方式,那么coreData是有什么不足么,不是,一般数据比较简易的时候是不会用coreData的,反而会用自身的sqlte3来实现本地的存储,这就需要用到了点SQL语句了,一般都会用第三方FMDB(第三方库)来简化使用,但第三方的应用是下一次博客的事情了,这次用自带的sqlite3来实现一个简易的通讯录,能够实现保存,并完成增删改查即可,毕竟是最基础的嘛,用第三方虽然简单,但是底层的基础还是要回的。首先看一下如何导入自身的sqlite3的库吧




       如果细看这个图,那么也就知道,这个demo是按照MVC模式写的,既然是MVC模式写的,那么必然就会出现Model(模型类),View(视图类)以及Controller(控制器类)


        这次的页面没有进行细作,只是为了能够了解Sqlite3的用法,首先就是模型类,看看数据库结构





     上面是一个第三方工具,虽然能够快速建立表,但是作为程序员,不建议用它直接建表,建议用sql语句,毕竟还能回顾以及锻炼自己的SQL语句嘛,岂不是一举两得,一般工具是用来查看数据库的。

     

      这里的布局非常简单,只是为了介绍sqlite3的用法,如果想要比较好的视觉可以去之前的博客iOS学习-------简单通讯录(UITableView和CoreData的应用),其他的都是一样的,只是存储的方法变了而已


Model(模型)

这个Model的作用就是存储数据库中表的信息即可,属性如下
//
//  Humen.h
//  Sqilte3
//
//  Created by YueWen on 15/10/6.
//  Copyright (c) 2015年 YueWen. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Humen : NSObject

@property(nonatomic,strong)NSString * name;//姓名

@property(nonatomic,assign)NSInteger age;//年龄

@property(nonatomic,strong)NSString * tele;//电话

@property(nonatomic,strong)NSString * address;//地址

@property(nonatomic,assign)NSInteger humenId;//id


/**
 *  便利初始化方法
 *
 *  @param name    初始name
 *  @param age     初始age
 *  @param tele    初始tele
 *  @param address 初始地址
 *
 *  @return 初始化好的Humen对象
 */
-(instancetype)initWithName:(NSString *)name Age:(NSInteger)age Tele:(NSString *)tele Address:(NSString *)address;

实现便利初始化方法
-(instancetype)initWithName:(NSString *)name Age:(NSInteger)age Tele:(NSString *)tele Address:(NSString *)address
{
    if (self = [super init])
    {
        self.name = name;//初始化name
        self.age = age;//初始化age
        self.tele = tele;//初始化tele
        self.address = address;//初始化address
    }
    
    return self;
}


接下来就是最重点的Sqlite3Manager(数据库管理员),首先他要有增删改查的功能,所以定义四个方法
/**
 *  增加人
 *
 *  @param humen 需要增加的Humen模型
 */
-(void)addHumenToSqlite:(Humen *)humen;

/**
 *  更新数据
 *
 *  @param humen 需要更新的Humen模型
 */
-(void)updateHumenFromSqlite:(Humen *)humen withIndex:(NSInteger)index;


/**
 *  根据下标即id删除
 *
 *  @param index 当前的id
 */
-(void)deleteHumenFromSqlite:(NSInteger)index;


/**
 *  根据姓名查询名字
 *
 *  @param name 查询的名字
 */
-(void)selectHumenFromWithName:(NSString *)name;

其次,Manager一般都是单例,这次也不例外
/**
 *  单例方法
 *
 *  @return 返回单例
 */
+(instancetype)shareSqlite3Manager;


此外,还应该有一个方法能够加载所有的数据,即刷新类似功能的时候,从新从数据库中加载一般数据

/**
 *  加载数据库中所有的数据
 */
-(void)loadMHumen;

如果外界想获得所有的数据,那么必然会有一个对外开放的属性,但是外界是不能更改的,所以是readOnly的属性

/**
 *  存储数据库中的数据数组
 */
@property(nonatomic,strong,readonly)NSArray * humen;


然后是最麻烦的实现方法,先从最简单的东西开始,不要忘记导入自带的sqlite3的头文件

#import <sqlite3.h>

延展中的属性,其中之一必须有导入sqlite3的对象,第二个就是可变数组,用来存储处理好的对象,也就是存储将字典处理好Humen对象,延展如下

@interface Sqlite3Manager ()

@property(nonatomic)sqlite3 * humendate;//不要加strong

@property(nonatomic,strong)NSMutableArray * mHumen;

@end

接着实现重写init方法,以及单例方法,这个相信是再熟悉也不过了

- (instancetype)init
{
    self = [super init];
    if (self) {
        
        
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值