ios开发常用知识点练习之记事本(一)

 最近抽空写了一个日记本小程序,为了练习一些知识点

一、用到的知识点

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 allocinit];

    });

    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 allocinitWithCapacity: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 allocinit];

            nb.noteId = [resultSet intForColumn:@"noteId"];

            nb.noteName = [resultSet stringForColumn:@"noteName"];

            nb.noteTime = [resultSet stringForColumn:@"noteTime"];<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值