这里将数据库的封装为一个工具类.将数据库设计为一个单例,封装一些打开,创建表格,增,删,改,查的方法.在收藏功能中主要用到,查询,增添,和删除的方法.
查询,返回的数据,是你存入的数据内容.可以返回数据库的全部内容,也可以根据某个属性,返回符合该属性的内容.
代码区别:
根据title来查询数据库中内容,返回与title一样的数据.
主要思路:
1.查询数据库的内容,遍历返回的数组来判断数据库中是否有想要收藏的数据(model),以此来判断收藏提示界面的状态.
2.收藏界面状态的更换,来判断什么时候往数据库中插入某条数据,什么时候删除数据库中的某条数据.
3.查询数据库中的内容,,将数据库中的内容在另外一个界面将数据库中的model展现出来.
将要收藏的数据(model)插入导数据库当中
实现该功能中遇到的问题:
1.什么时候插入数据,什么时候删除数据,不能写在 遍历查询返回的数组当中 ,会导致多条数据同时插入,同时删除.
2.判断起初的收藏状态,必须在该界面初始化之后,界面出现之前,多注意程序走方法的先后顺序.
3.数据库建立的 表格,若是同名,后建的表格不会替换之前的表格,若是表格添加了新的一列,属性,必须在文件夹中,将原始建立的表格删除.
4.数据库存数据的小技巧,先考虑自己想要存的内容,根据想要存的内容建立model类型,
在收藏界面,用该model的属性接收来自不同界面来的model类型的属性(一般为字符串属性,分开接收,这样避免直接接收整个model时需要判断不同的model类型)
避免界面一样,model的属性不同 ,导致数据中存储一些(null)的数据.
#import .h
@class ModelForListen;
@interface DataBaseHandler : NSObject
+ (instancetype)shareDataBaseHandler;
- (void)open;
- (void)createTable;
- (void)insertModel:(ModelForListen *) model;
- (void)updataModel:(ModelForListen *)model ForNumber:(NSInteger)number;
- (void)deleteWithTitle:(NSString *)title;
- (void)deleteWithModel:(ModelForListen *)model;
- (NSArray *)selectForTitle:(NSString *)title;
- (NSArray *)selectForModel;
- (void)dropTable;
- (void)closeDB;
.m
DataBaseHandler.m// UI21_SQLite Created by dllo on 16/1/11.// Copyright © 2016年 dllo. All rights reserved.//#import "DataBaseHandler.h"#import#import "ModelForListen.h"
@implementation DataBaseHandler
#pragma mark - 知识点 1 单例