UI進(jìn)階之記事本4

創(chuàng)建model類 ? WordNote

WordNote.h中

添加幾個(gè)屬性

//記事本ID

@property (nonatomic, assign) NSInteger WID;

//記事本Title

@property (nonatomic, copy) NSString *title;

//記事本記錄的內(nèi)容

@property (nonatomic, copy) NSString *note;

//記錄時(shí)間

@property (nonatomic, copy) NSString *time;

//文件夾的ID

@property (nonatomic, assign) NSInteger FID;

創(chuàng)建model類? FileMessage

FileMessage.h中

聲明屬性

//文件夾title

@property (nonatomic, copy) NSString *title;

//記錄時(shí)間

@property (nonatomic, copy) NSString *time;

//文件夾的id

@property (nonatomic, assign) NSInteger FID;

創(chuàng)建DataBaseHandle

DataBaseHandle.h中

//引入頭文件

#import "WordNote.h"

#import "FileMessage.h"

//添加方法


//數(shù)據(jù)庫(kù)單例

+ (DataBaseHandle *)sharedDataBaseHandle;

//打開數(shù)據(jù)庫(kù)

- (void)openDB;

//關(guān)閉數(shù)據(jù)庫(kù)

- (void)closeDB;

//創(chuàng)建記事本表

- (void)createWordNoteTable;

//創(chuàng)建文件夾表

- (void)createfileMessageTable;

//向WOrdNote里面插入一個(gè)WordNote類型的model

- (void)insertToWordNoteWith:(WordNote *)model;

//向fileMessage 表里面插入fileMessage類型的model

- (void)insertIntoFileMessageWith:(FileMessage *)model;

//根據(jù)WID刪除掉wordNote里面的某條數(shù)據(jù)

- (void)deleteFromWordNoteWithWID:(NSInteger )WID;

//根據(jù)FID刪掉WordNote里的一堆數(shù)據(jù)

- (void)deleteFromWordNoteWithFID:(NSInteger)FID;

//根據(jù)FID刪掉FileMessage里的一條數(shù)據(jù)

- (void)deleteFromFileMessageWithFID:(NSInteger)FID;

//根據(jù)FID在WordNote里面查詢數(shù)據(jù)

- (NSMutableArray *)searchFromWordNoteWithFID:(NSInteger )FID;

//查詢FileMessage里面的所有數(shù)據(jù)

- (NSMutableArray *)searchAllFromFileMessage;

DataBaseHandle.m中


#import<sqlite3.h>

#import@interface DataBaseHandle()

@property (nonatomic, copy) NSString *dbPath;

@end

//設(shè)置全局變量,

static DataBaseHandle *dataBase = nil;

/數(shù)據(jù)庫(kù)單例

+ (DataBaseHandle *)sharedDataBaseHandle

{

if (dataBase == nil) {

dataBase = [[DataBaseHandle alloc]init];

}

return dataBase;

}


//懶加載

- (NSString *)dbPath

{

if (_dbPath == nil) {

NSString *document = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];

_dbPath = [document stringByAppendingPathComponent:@"word.sqlite"];

}

return _dbPath;

}


static sqlite3 *db = nil;

//打開數(shù)據(jù)庫(kù)

- (void)openDB

{

int result = sqlite3_open(self.dbPath.UTF8String, &db);

if (result == SQLITE_OK)

{

NSLog(@"打開成功");

}else

{

NSLog(@"打開失敗");

}

NSLog(@"databasePath == %@", _dbPath);

}

//關(guān)閉數(shù)據(jù)庫(kù)

- (void)closeDB

{

int result = sqlite3_close(db);

if (result == SQLITE_OK)

{

NSLog(@"關(guān)閉成功");

}else

{

NSLog(@"關(guān)閉失敗");

}

}

//創(chuàng)建記事本表

- (void)createWordNoteTable

{

NSString *createTable = @"create table? WordNote (WID integer primary key autoincrement, title text, note text, time text, FID integer)";

int result = sqlite3_exec(db, createTable.UTF8String, NULL, NULL, NULL);

if (result == SQLITE_OK)

{

NSLog(@"創(chuàng)建記事本表成功");

} else

{

NSLog(@"創(chuàng)建失敗 %d", result);

}

}

//創(chuàng)建文件夾表

- (void)createfileMessageTable

{

NSString *creatafile = @"create table if not exists fileMessage (FID integer primary key autoincrement, title text, time text)";

int result = sqlite3_exec(db, creatafile.UTF8String, NULL, NULL, NULL);

if (result == SQLITE_OK)

{

NSLog(@"創(chuàng)建文件夾表成功");

} else

{

NSLog(@"創(chuàng)建失敗");

}

}

//向WOrdNote里面插入一個(gè)WordNote類型的model

- (void)insertToWordNoteWith:(WordNote *)model

{

//插入流程

//第一步創(chuàng)建sql語(yǔ)句

NSString *insdrtString= @"insert into WordNote (title, note, time, FID) values (?, ?, ?, ?)";

//第二步:創(chuàng)建伴隨指針

sqlite3_stmt *stmt = nil;

//第三步:使用sqlite3_prepare方法預(yù)執(zhí)行sql語(yǔ)句

int result = sqlite3_prepare(db, insdrtString.UTF8String, -1, &stmt, NULL);

//第四步: 判斷是否預(yù)執(zhí)行成功,如果成功 進(jìn)行下一步

if (result == SQLITE_OK) {

//第五步:向?的位置插入數(shù)據(jù)

sqlite3_bind_text(stmt, 1, model.title.UTF8String, -1, NULL);

sqlite3_bind_text(stmt, 2, model.note.UTF8String, -1, NULL);

sqlite3_bind_text(stmt, 3, model.time.UTF8String, -1, NULL);

sqlite3_bind_int64(stmt, 4, model.FID);

//第六步:判斷伴隨指針是否完成

if (sqlite3_step(stmt) == SQLITE_DONE) {

NSLog(@"插入成功");

}

}

//第七步: 記得釋放伴隨指針

sqlite3_finalize(stmt);

}

//向fileMessage 表里面插入fileMessage類型的model

- (void)insertIntoFileMessageWith:(FileMessage *)model{

//插入流程

//第一步創(chuàng)建sql語(yǔ)句

NSString *fileMessageString = @"insert into fileMessage ( title, time) values (?, ?)";

//第二步:創(chuàng)建伴隨指針

sqlite3_stmt *stmt = nil;

//第三步:使用sqlite3_prepare方法預(yù)執(zhí)行sql語(yǔ)句

int result = sqlite3_prepare(db, fileMessageString.UTF8String, -1, &stmt, NULL);

//第四步: 判斷是否預(yù)執(zhí)行成功,如果成功 進(jìn)行下一步

if (result == SQLITE_OK) {

//第五步:向?的位置插入數(shù)據(jù)

sqlite3_bind_text(stmt, 1, model.title.UTF8String, -1, NULL);

sqlite3_bind_text(stmt, 2, model.time.UTF8String, -1, NULL);

//第六步:判斷伴隨指針是否完成

if (sqlite3_step(stmt) == SQLITE_DONE) {

NSLog(@"插入成功");

}

}

//第七步: 記得釋放伴隨指針

sqlite3_finalize(stmt);

}

#pragma mark --刪除方法

//根據(jù)WID刪除掉wordNote里面的某條數(shù)據(jù)

- (void)deleteFromWordNoteWithWID:(NSInteger )WID

{

//刪除流程

//第一步:創(chuàng)建sql語(yǔ)句

NSString *deleteString = [NSString stringWithFormat:@"delete from WordNote where WID = %ld", WID];

//第二步:執(zhí)行sql語(yǔ)句

int result = sqlite3_exec(db, deleteString.UTF8String, NULL, NULL, NULL);

if (result == SQLITE_OK) {

NSLog(@"刪除成功");

} else

{

NSLog(@"刪除失敗");

}

}

//根據(jù)FID刪掉WordNote里的一堆數(shù)據(jù)

- (void)deleteFromWordNoteWithFID:(NSInteger)FID

{

NSString *deleteString = [NSString stringWithFormat:@"delete from WordNote where FID = %ld", FID];

int reslut = sqlite3_exec(db, deleteString.UTF8String, NULL, NULL, NULL);

if (reslut == SQLITE_OK) {

NSLog(@"刪除成功");

}else

{

NSLog(@"刪除失敗");

}

}

//根據(jù)FID刪掉FileMessage里的一條數(shù)據(jù)

- (void)deleteFromFileMessageWithFID:(NSInteger)FID

{

NSString *deleteString = [NSString stringWithFormat:@"delete from fileMessage where FID = %ld", FID];

int reslut = sqlite3_exec(db, deleteString.UTF8String, NULL, NULL, NULL);

if (reslut == SQLITE_OK) {

NSLog(@"刪除成功");

}else

{

NSLog(@"刪除失敗");

}

}

//根據(jù)FID在WordNote里面查詢數(shù)據(jù)

- (NSMutableArray *)searchFromWordNoteWithFID:(NSInteger )FID

{

//查詢步驟

//第一步:創(chuàng)建sql語(yǔ)句

NSString *searchString = @"select * from WordNote where FID = ?";

//第二步:伴隨指針

sqlite3_stmt *stmt = nil;

//第三步:讓查詢語(yǔ)句 預(yù)處理

int result = sqlite3_prepare(db, searchString.UTF8String, -1, &stmt, NULL);

NSMutableArray *resultArray = [NSMutableArray array];

//第四步: 判斷預(yù)處理數(shù)據(jù)

if (result == SQLITE_OK)

{

//第四點(diǎn)五步:如果查詢語(yǔ)句有 ? 需要一部綁定的過(guò)程

sqlite3_bind_int64(stmt, 1, FID);

//第五步 循環(huán)取值

while (sqlite3_step(stmt)? == SQLITE_ROW)

{

WordNote *model = [WordNote new];

model.WID = sqlite3_column_int(stmt, 0);

model.title = [NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 1)];

model.note = [NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 2)];

model.time = [NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 3)];

model.FID = sqlite3_column_int(stmt, 4);

[resultArray addObject:model];

}

}

sqlite3_finalize(stmt);

return resultArray;

}

//查詢FileMessage里面的所有數(shù)據(jù)

- (NSMutableArray *)searchAllFromFileMessage

{

//查詢步驟

//第一步:創(chuàng)建sql語(yǔ)句

NSString *searchString = @"select? * from fileMessage";

//第二步:伴隨指針

sqlite3_stmt *stmt = nil;

//第三步:讓查詢語(yǔ)句 預(yù)處理

int reslut = sqlite3_prepare(db, searchString.UTF8String, -1, &stmt, NULL);

NSMutableArray *searchArray = [NSMutableArray array];

//第四步: 判斷預(yù)處理數(shù)據(jù)

if (reslut == SQLITE_OK)

{

//第五步 循環(huán)取值

while (sqlite3_step(stmt) == SQLITE_ROW)

{

FileMessage *model = [FileMessage new];

model.FID = sqlite3_column_int(stmt, 0);

model.title = [NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 1)];

model.time = [NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 2)];

[searchArray addObject:model];

}

}

sqlite3_finalize(stmt);

return searchArray;

}



?創(chuàng)建MyLongPressGestureRecognizer類

MyLongPressGestureRecognizer.h中

#warning 這是新的類

@interface MyLongPressGestureRecognizer : UILongPressGestureRecognizer

// 因?yàn)樵嫉拈L(zhǎng)按手勢(shì)沒有indexPath屬性,所以自定義一個(gè)長(zhǎng)按類,添加一個(gè)indexPath屬性

@property (nonatomic, strong) NSIndexPath *indexPath;

@end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末异赫,一起剝皮案震驚了整個(gè)濱河市该园,隨后出現(xiàn)的幾起案子迅脐,更是在濱河造成了極大的恐慌督惰,老刑警劉巖调窍,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件低淡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡寻狂,警方通過(guò)查閱死者的電腦和手機(jī)岁经,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蛇券,“玉大人缀壤,你說(shuō)我怎么就攤上這事樊拓。” “怎么了塘慕?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵筋夏,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我图呢,道長(zhǎng)条篷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任蛤织,我火速辦了婚禮赴叹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘指蚜。我一直安慰自己乞巧,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布摊鸡。 她就那樣靜靜地躺著摊欠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪柱宦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天播瞳,我揣著相機(jī)與錄音掸刊,去河邊找鬼。 笑死赢乓,一個(gè)胖子當(dāng)著我的面吹牛忧侧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播牌芋,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼蚓炬,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了躺屁?” 一聲冷哼從身側(cè)響起肯夏,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎犀暑,沒想到半個(gè)月后驯击,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡耐亏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年徊都,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片广辰。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡暇矫,死狀恐怖主之,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情李根,我是刑警寧澤槽奕,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站朱巨,受9級(jí)特大地震影響史翘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜冀续,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一琼讽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧洪唐,春花似錦钻蹬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至粒蜈,卻和暖如春顺献,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背枯怖。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工注整, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人度硝。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓肿轨,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蕊程。 傳聞我的和親對(duì)象是個(gè)殘疾皇子椒袍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容