最近抽空写了一个日记本小程序,为了练习一些知识点
一、用到的知识点
1、FMDB,自己封装了增删改查的方法
2、StoryBoard 画图,segue传值
3、自定义UIPickerView,可以移植,多类型操作
4、自定义cell、实体、手势操作
5、属性字符串练习
6、UIcollectView的简单使用
总之都是小白的写法,大牛请绕行。下面开始:
二、FMDB
1、导入所有这些h和m
framework添加libsqlite3.dylib
2、建立数据库模型
#import <Foundation/Foundation.h> @class FMDatabase;
#define DB_NAME @"long.sqlite"
@interface Database : NSObject { FMDatabase *db; } - (NSString*)SQL:(NSString*)sql inTable:(NSString*)table;
@end |
#import "Database.h" #import "FMDatabase.h" @implementation Database
- (id)init{ self = [super init]; if (self) { NSString *dbPath = [documentPathstringByAppendingPathComponent:DB_NAME]; db = [FMDatabase databaseWithPath:dbPath]; if ([db open]) { [db setShouldCacheStatements:YES]; debugLog(@"open db success"); }else { debugLog(@"failed to open db"); } } return self; } #pragma mark - 执行SQL语句 - (NSString*)SQL:(NSString *)sql inTable:(NSString *)table{ return [NSString stringWithFormat:sql,table]; } @end |
3、封装数据库操作
#define TABLE_NAME_NOTEBOOK @"NOTEBOOK"
@interface DatabaseOperation : Database
+ (id)sharedInstance; //单例
// 查找 - (NSMutableArray *) findByCriteria:(NSString *)criteria;//按条件查找 - (NoteBook *) findFirstByCriteria:(NSString *)criteria; //查找第一个 - (NSInteger) countByCriteria:(NSString *)criteria; //计数,满足条件的个数
// 插入 - (void) saveNoteBook:(NoteBook *)noteBook; //保存,插入 //- (void) saveNoteBooks:(NSArray *)noteBooks; //保存多个数据,对于多参数数据存数不对,需要调整
// 更新 - (BOOL) updateAtIndex:(NSInteger)index withNoteBook:(NoteBook *)noteBook;//更新
// 删除 - (BOOL) deleteAtIndex:(int)index; //删除
// 清空 - (BOOL) cleanTable:(NSString*)tableName; |
+ (id)sharedInstance { static dispatch_once_t once; static id sharedInstance; dispatch_once(&once, ^{ sharedInstance = [[self alloc] init]; }); return sharedInstance; } #pragma mark - 建表 - (id)init{ self = [super init]; if (self) { if (![db tableExists:TABLE_NAME_NOTEBOOK]) { NSString *sql = [self SQL:@"create table if not exists '%@'('noteId' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,'noteName' text,'noteTime' text,'noteStyle' text,'noteContent' text);"inTable:TABLE_NAME_NOTEBOOK]; BOOL result = [db executeUpdate:sql]; if (result) { debugLog(@"create table success"); }else{ debugLog(@"Fialed to create table"); } } debugLog(@"table exists"); [db close]; } return self; } #pragma mark - 查找 #pragma mark - 查找所有满足条件的数据 - (NSMutableArray*)findByCriteria:(NSString *)criteria{ NSMutableArray *resultArr = [[NSMutableArray alloc] initWithCapacity:0]; NSMutableString *sql = [NSMutableString stringWithString:[selfSQL:@"select * from %@" inTable:TABLE_NAME_NOTEBOOK]]; if (criteria!=nil) { [sql appendString:criteria]; } if ([db open]) { FMResultSet *resultSet = [db executeQuery:sql]; while ([resultSet next]) { //提取赋值 NoteBook *nb = [[NoteBook alloc] init]; nb.noteId = [resultSet intForColumn:@"noteId"]; nb.noteName = [resultSet stringForColumn:@"noteName"]; nb.noteTime = [resultSet stringForColumn:@"noteTime"];< |