ios FMDB使用

最近使用FMDB心得
廢話不說直接上代碼

DBConst.h

/** 數(shù)據(jù)庫名稱 */
static NSString * const cart_db_sqlite = @"chat_userinfo.sqlite";
/** 購物車 數(shù)據(jù)表名稱 */
static NSString * const cart_name = @"hpbd_cart_table";


/** 商品縮略圖 參數(shù)名 */
static NSString * const cart_table_mall_thumb = @"mall_thumb";
/** 商品名稱 參數(shù)名 */
static NSString * const cart_table_mall_title = @"mall_title";
/** 商品單價(jià) 參數(shù)名 */
static NSString * const cart_table_mall_price = @"mall_price";
/** 商品數(shù)量 參數(shù)名 */
static NSString * const cart_table_mall_count = @"mall_count";
/** 商品ID 參數(shù)名 */
static NSString * const cart_table_mall_id = @"mall_id";
/** 商鋪名稱 */
static NSString * const cart_table_shop_name = @"shop_name";
/** 商鋪id */
static NSString * const cart_table_shop_id = @"shop_id";
/** 商品庫存 */
static NSString * const cart_table_mall_stock = @"mall_stock";
/** 創(chuàng)建時(shí)間 */
static NSString * const cart_table_create_time = @"create_time";

//  CartDBData.h
#import <Foundation/Foundation.h>

@interface CartDBData : NSObject

/** 商品名稱 */
@property (nonatomic, copy) NSString *mallname;
/** 商品縮略圖 */
@property (nonatomic, copy) NSString *mallthumb;
/** 商品id */
@property (nonatomic, copy) NSString *mallid;
/** 商品數(shù)量 */
@property (nonatomic, copy) NSString *mallcount;
/** 商品價(jià)格 */
@property (nonatomic, copy) NSString *mallprice;
/** 商鋪名稱 */
@property (nonatomic, copy) NSString *shopname;
/** 商鋪id */
@property (nonatomic, copy) NSString *shopid;
/** 商品庫存 */
@property (nonatomic, copy) NSString *mallstock;

@end
//  CardDBManage.h

#import <Foundation/Foundation.h>
#import "FMDatabase.h"
#import "DBConst.h"
#import "CartDBData.h"

@interface CardDBManage : NSObject

@property (nonatomic, strong) FMDatabase *cardDB;

/** 開啟本地?cái)?shù)據(jù)庫,創(chuàng)建購物車數(shù)據(jù)表 */
+ (void)startDBService;

/** 新增/修改 商品的 商品信息/數(shù)量 */
+ (void)updateMallID:(NSString*)mallid
               thumb:(NSString*)thumb
                name:(NSString*)name
               price:(NSString*)price
               count:(NSString*)count
            shopname:(NSString*)shaopname
              shopid:(NSString*)shopid
               stock:(NSString*)stock;

/** 更新商品數(shù)量 */
+ (void)updateMallCount:(NSString*)count
             withMallId:(NSString*)mallid
                   type:(BOOL)isAdd;

/** 刪除商品 */
+ (void)deleteMallWithID:(NSString*)mallid;

/** 提交訂單成功后清空購物車 */
+ (void)clearCartList;

/** 查詢購物車列表 */
+ (NSArray*)queryCartDatas;

/** 獲取購物車內(nèi)商品數(shù)量 */
+ (NSString*)getCartCount;

/** 查詢某個(gè)商品的數(shù)量 */
+ (NSString*)getCountWithMallId:(NSString*)mallid;

/** 查詢商品當(dāng)前庫存量 */
+ (NSString*)getMallStock:(NSString*)mallid;

/** 新增/修改 商品的 商品信息 */
+ (void)updateMallID:(NSString*)mallid
               thumb:(NSString*)thumb
                name:(NSString*)name
               price:(NSString*)price
            shopname:(NSString*)shaopname
              shopid:(NSString*)shopid
               stock:(NSString*)stock;

//  CardDBManage.m

#import "CardDBManage.h"

@implementation CardDBManage
+ (CardDBManage*)shareInstance
{
    static id shareInstance = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        shareInstance = [[self alloc] init];
    });
    return shareInstance;
}

#pragma mark - 創(chuàng)建數(shù)據(jù)庫
+ (void)startDBService
{
    [[CardDBManage shareInstance] startService];
}

#pragma mark -
- (void)startService
{
    NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) lastObject];
    NSString *fileName = [docPath stringByAppendingPathComponent:HPString(@"%@",cart_db_sqlite)];
    Dlog(@"===> [購物車DB路徑] %@ <===",fileName);
    self.cardDB =[FMDatabase databaseWithPath:fileName];
    [self openDB];
    /**
     *  表中數(shù)據(jù):商品ID、商品縮略圖、商品名稱抚吠、商品數(shù)量凑阶、商品單價(jià)林束、創(chuàng)建數(shù)據(jù)時(shí)間
     *
     */
    NSString *createCartTable = HPString(
                                             @"create table if not exists %@(%@ integer primary key autoincrement, %@ text, %@ text, %@ text, %@ text, %@ text, %@ text, %@ text, %@ text);",
                                              cart_name,
                                              cart_table_mall_id,
                                              cart_table_mall_thumb,
                                              cart_table_mall_title,
                                              cart_table_mall_price,
                                              cart_table_mall_count,
                                              cart_table_shop_name,
                                              cart_table_shop_id,
                                              cart_table_mall_stock,
                                              cart_table_create_time);
    BOOL createCartTableResult = [self.cardDB executeUpdate:createCartTable];
    if (createCartTableResult) {
        Dlog(@"創(chuàng)建購物車數(shù)據(jù)表成功");
    } else {
        Dlog(@"創(chuàng)建購物車數(shù)據(jù)表失敗");
    }
    [self closeDB];
}

/** 新增/修改 商品的 商品信息 */
+ (void)updateMallID:(NSString*)mallid thumb:(NSString*)thumb name:(NSString*)name price:(NSString*)price shopname:(NSString*)shaopname shopid:(NSString*)shopid stock:(NSString*)stock
{
    [[CardDBManage shareInstance] updateMallID:mallid thumb:thumb name:name price:price shopname:shaopname shopid:shopid stock:stock];
}

- (void)updateMallID:(NSString*)mallid thumb:(NSString*)thumb name:(NSString*)name price:(NSString*)price shopname:(NSString*)shaopname shopid:(NSString*)shopid stock:(NSString*)stock
{
    BOOL hasSaved = [self hasSaved:mallid];
    [self openDB];
    NSString *sql = nil;
    if (hasSaved) { //已存儲(chǔ)惹恃,更新
//        sql = HPString(@"UPDATE %@ SET '%@' = '%@','%@' = '%@','%@' = '%@', '%@' = '%@', '%@' = '%@', '%@' = '%@', '%@' = '%@' WHERE %@ = %@",
//                       cart_name,
//                       cart_table_mall_thumb,
//                       thumb,
//                       cart_table_mall_title,
//                       name,
//                       cart_table_mall_price,
//                       price,
//                       cart_table_mall_count,
//                       @"0",
//                       cart_table_shop_name,
//                       shaopname,
//                       cart_table_shop_id,
//                       shopid,
//                       cart_table_mall_stock,
//                       stock,
//                       cart_table_mall_id,
//                       mallid);
    } else {    //未存儲(chǔ)庇茫,新增
        sql = HPString(@"INSERT INTO %@ ('%@','%@','%@','%@','%@','%@','%@','%@','%@') VALUES ('%@','%@','%@','%@','%@','%@','%@','%@','%@')",
                       cart_name,
                       cart_table_mall_id,
                       cart_table_mall_thumb,
                       cart_table_mall_title,
                       cart_table_mall_price,
                       cart_table_mall_count,
                       cart_table_create_time,
                       cart_table_shop_name,
                       cart_table_shop_id,
                       cart_table_mall_stock,
                       mallid,
                       thumb,
                       name,
                       price,
                       @"0",
                       [NSString getCurrentDate],
                       shaopname,
                       shopid,
                       stock);
    }
    BOOL result = [self.cardDB executeUpdate:sql];
    if (result) {
        if (hasSaved) {
            Dlog(@"[更新數(shù)據(jù)成功]");
        } else {
            Dlog(@"[新增數(shù)據(jù)成功]");
        }
    } else {
        if (hasSaved) {
            Dlog(@"[更新數(shù)據(jù)失敗]");
        } else {
            Dlog(@"[新增數(shù)據(jù)失敗]");
        }
    }
    [self closeDB];
}

#pragma mark - 新增/修改 商品的 商品信息/數(shù)量
+ (void)updateMallID:(NSString *)mallid thumb:(NSString *)thumb name:(NSString *)name price:(NSString *)price count:(NSString *)count shopname:(NSString *)shaopname shopid:(NSString*)shopid stock:(NSString *)stock
{
    [[CardDBManage shareInstance] updateMallID:mallid thumb:thumb name:name price:price count:count shopname:shaopname shopid:shopid stock:stock];
}

#pragma mark -
- (void)updateMallID:(NSString *)mallid thumb:(NSString *)thumb name:(NSString *)name price:(NSString *)price count:(NSString *)count shopname:(NSString *)shaopname shopid:(NSString*)shopid stock:(NSString *)stock
{
    BOOL hasSaved = [self hasSaved:mallid];
    [self openDB];
    NSString *sql = nil;
    if (hasSaved) { //已存儲(chǔ)恃锉,更新 ps:需要先查出數(shù)量搀菩,累加1
        NSString *countSql = HPString(@"select * from %@ where %@ = %@",cart_name,cart_table_mall_id,mallid);
        FMResultSet *countResult =  [self.cardDB executeQuery:countSql];
        NSString *addCount = @"1";
        NSString *subCount = stock;
        while ([countResult next]) {
            CartDBData *data = [[CartDBData alloc] init];
            data.mallcount = [countResult stringForColumn:cart_table_mall_count];
            data.mallstock = [countResult stringForColumn:cart_table_mall_stock];
            addCount = HPString(@"%d",data.mallcount.intValue+count.intValue);
            subCount = HPString(@"%d",data.mallstock.intValue - count.intValue);
        }

        sql = HPString(@"UPDATE %@ SET '%@' = '%@','%@' = '%@','%@' = '%@', '%@' = '%@', '%@' = '%@', '%@' = '%@', '%@' = '%@' WHERE %@ = %@",
                       cart_name,
                       cart_table_mall_thumb,
                       thumb,
                       cart_table_mall_title,
                       name,
                       cart_table_mall_price,
                       price,
                       cart_table_mall_count,
                       addCount,
                       cart_table_shop_name,
                       shaopname,
                       cart_table_shop_id,
                       shopid,
                       cart_table_mall_stock,
                       subCount,
                       cart_table_mall_id,
                       mallid);
    } else {    //未存儲(chǔ),新增
        NSString *currentStock = HPString(@"%d",stock.intValue-1);
        sql = HPString(@"INSERT INTO %@ ('%@','%@','%@','%@','%@','%@','%@','%@','%@') VALUES ('%@','%@','%@','%@','%@','%@','%@','%@','%@')",
                       cart_name,
                       cart_table_mall_id,
                       cart_table_mall_thumb,
                       cart_table_mall_title,
                       cart_table_mall_price,
                       cart_table_mall_count,
                       cart_table_create_time,
                       cart_table_shop_name,
                       cart_table_shop_id,
                       cart_table_mall_stock,
                       mallid,
                       thumb,
                       name,
                       price,
                       count,
                       [NSString getCurrentDate],
                       shaopname,
                       shopid,
                       currentStock);
    }
    BOOL result = [self.cardDB executeUpdate:sql];
    if (result) {
        if (hasSaved) {
            Dlog(@"[更新數(shù)據(jù)成功]");
        } else {
            Dlog(@"[新增數(shù)據(jù)成功]");
        }
    } else {
        if (hasSaved) {
            Dlog(@"[更新數(shù)據(jù)失敗]");
        } else {
            Dlog(@"[新增數(shù)據(jù)失敗]");
        }
    }
    [self closeDB];
}

#pragma mark - 更新商品數(shù)量
+ (void)updateMallCount:(NSString *)count withMallId:(NSString *)mallid type:(BOOL)isAdd
{
    [[CardDBManage shareInstance] updateMallCount:count withMallId:mallid type:isAdd];
}

#pragma mark -
- (void)updateMallCount:(NSString *)count withMallId:(NSString *)mallid type:(BOOL)isAdd
{
    [self openDB];
    
    NSString *countSql = HPString(@"select * from %@ where %@ = %@",cart_name,cart_table_mall_id,mallid);
    FMResultSet *countResult =  [self.cardDB executeQuery:countSql];
    NSString *stockCount = @"0";
    while ([countResult next]) {
        CartDBData *data = [[CartDBData alloc] init];
        data.mallstock = [countResult stringForColumn:cart_table_mall_stock];
        stockCount = HPString(@"%@",data.mallstock);
    }
    
    if (isAdd) {
        stockCount = HPString(@"%d",stockCount.intValue-1);
    } else {
        stockCount = HPString(@"%d",stockCount.intValue+1);
    }

    NSString *sql = HPString(@"UPDATE %@ SET '%@' = '%@', '%@'='%@' WHERE %@ = %@",
                             cart_name,
                             cart_table_mall_count,
                             count,
                             cart_table_mall_stock,
                             stockCount,
                             cart_table_mall_id,
                             mallid);
    
    BOOL result = [self.cardDB executeUpdate:sql];
    if (result) {
        Dlog(@"更新商品數(shù)量成功");
    } else {
        Dlog(@"更新商品數(shù)量失敗");
    }
    [self closeDB];
}


#pragma mark - 刪除商品
+ (void)deleteMallWithID:(NSString *)mallid
{
    [[CardDBManage shareInstance] deleteMallWithID:mallid];
}

#pragma mark -
- (void)deleteMallWithID:(NSString *)mallid
{
    NSString *sql = HPString(@"DELETE FROM %@ WHERE %@ = %@",cart_name,cart_table_mall_id,mallid);
    [self openDB];
    BOOL result = [self.cardDB executeUpdate:sql];
    if (result) {
        [HubLoading showText:@"刪除成功"];
    } else {
        [HubLoading showText:@"刪除失敗破托,請(qǐng)稍后重試"];
    }
    [self closeDB];
}

#pragma mark - 驗(yàn)證商品是否已存儲(chǔ)
- (BOOL)hasSaved:(NSString *)mallid
{
    if (HPVerifyStrLegal(mallid)) {
        [self openDB];
        NSString *verifySql = [NSString stringWithFormat:@"select * from %@ where %@ = %@",cart_name,cart_table_mall_id,mallid];
        FMResultSet *resultSet = [self.cardDB executeQuery:verifySql];
        if ([resultSet next]) {
            [self closeDB];
            return YES;
        }
        [self closeDB];
        return NO;
    }
    return NO;
}

#pragma mark - 提交訂單成功后清空購物車
+ (void)clearCartList
{
    [[CardDBManage shareInstance] clearCartList];
}

#pragma mark -
- (void)clearCartList
{
    NSString *sql = HPString(@"DELETE FROM %@",cart_name);
    [self openDB];
    BOOL clearResult = [self.cardDB executeUpdate:sql];
    if (clearResult) {
        Dlog(@"已清空購物車");
    } else {
        Dlog(@"清空購物車失敗");
    }
    [self closeDB];
}

#pragma mark - 查詢購物車列表
+ (NSArray*)queryCartDatas
{
    return [[CardDBManage shareInstance] queryCartDatas];
}

#pragma mark -
- (NSArray*)queryCartDatas
{
    NSMutableArray *cartDatas = [NSMutableArray arrayWithCapacity:0];
    NSString *sql = HPString(@"select * from %@",cart_name);
    [self openDB];
    FMResultSet *queryResult =  [self.cardDB executeQuery:sql];
    while ([queryResult next]) {
        if ([[queryResult stringForColumn:cart_table_mall_count] isEqualToString:@"0"])
        {
            break;
        }
        CartDBData *data = [[CartDBData alloc] init];
        data.mallid = [queryResult stringForColumn:cart_table_mall_id];
        data.mallthumb = [queryResult stringForColumn:cart_table_mall_thumb];
        data.mallname = [queryResult stringForColumn:cart_table_mall_title];
        data.mallcount = [queryResult stringForColumn:cart_table_mall_count];
        data.mallprice = [queryResult stringForColumn:cart_table_mall_price];
        data.shopname = [queryResult stringForColumn:cart_table_shop_name];
        data.shopid = [queryResult stringForColumn:cart_table_shop_id];
        [cartDatas addObject:data];
    }
    [self closeDB];
    return cartDatas;
}

+ (NSString*)getCartCount
{
    return [[CardDBManage shareInstance] getCartCount];
}

- (NSString*)getCartCount
{
    NSInteger count = 0;
    NSString *sql = HPString(@"select * from %@",cart_name);
    [self openDB];
    FMResultSet *queryResult =  [self.cardDB executeQuery:sql];
    while ([queryResult next]) {
        CartDBData *data = [[CartDBData alloc] init];
        data.mallcount = [queryResult stringForColumn:cart_table_mall_count];
        count = count+data.mallcount.integerValue;
    }
    [self closeDB];
    return HPString(@"%ld",(long)count);
}

+ (NSString*)getCountWithMallId:(NSString *)mallid
{
    return [[CardDBManage shareInstance] getCountWithMallId:mallid];
}

- (NSString*)getCountWithMallId:(NSString *)mallid
{
    NSInteger count = 0;
    NSString *sql = HPString(@"select * from %@ where %@ = %@",cart_name,cart_table_mall_id,mallid);
    [self openDB];
    FMResultSet *queryResult =  [self.cardDB executeQuery:sql];
    while ([queryResult next]) {
        CartDBData *data = [[CartDBData alloc] init];
        data.mallcount = [queryResult stringForColumn:cart_table_mall_count];
        count = count+data.mallcount.integerValue;
    }
    [self closeDB];
    return HPString(@"%ld",(long)count);
}

+ (NSString*)getMallStock:(NSString *)mallid
{
    return [[CardDBManage shareInstance] getMallStock:mallid];
}

- (NSString*)getMallStock:(NSString *)mallid
{
    NSInteger count = 0;
    NSString *sql = HPString(@"select * from %@ where %@ = %@",cart_name,cart_table_mall_id,mallid);
    [self openDB];
    FMResultSet *queryResult =  [self.cardDB executeQuery:sql];
    while ([queryResult next]) {
        CartDBData *data = [[CartDBData alloc] init];
        data.mallstock = [queryResult stringForColumn:cart_table_mall_stock];
        count = data.mallstock.integerValue;
    }
    [self closeDB];
    return HPString(@"%ld",(long)count);
}

#pragma mark - 打開數(shù)據(jù)庫
- (BOOL)openDB
{
    return [self.cardDB open];
}

#pragma mark - 關(guān)閉數(shù)據(jù)庫
- (BOOL)closeDB
{
    return [self.cardDB close];
}

app啟動(dòng)的時(shí)候調(diào)用
//購物車
    [CardDBManage startDBService];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末肪跋,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子土砂,更是在濱河造成了極大的恐慌州既,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件萝映,死亡現(xiàn)場(chǎng)離奇詭異吴叶,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)序臂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門蚌卤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人奥秆,你說我怎么就攤上這事逊彭。” “怎么了构订?”我有些...
    開封第一講書人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵侮叮,是天一觀的道長。 經(jīng)常有香客問我悼瘾,道長囊榜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任亥宿,我火速辦了婚禮卸勺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘箩绍。我一直安慰自己温技,他們只是感情好你稚,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開白布仿荆。 她就那樣靜靜地躺著走哺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪卑吭。 梳的紋絲不亂的頭發(fā)上芽淡,一...
    開封第一講書人閱讀 52,158評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音豆赏,去河邊找鬼挣菲。 笑死,一個(gè)胖子當(dāng)著我的面吹牛掷邦,可吹牛的內(nèi)容都是我干的白胀。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼抚岗,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼或杠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起宣蔚,我...
    開封第一講書人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤向抢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后胚委,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挟鸠,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年亩冬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了艘希。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鉴未,死狀恐怖枢冤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情铜秆,我是刑警寧澤淹真,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站连茧,受9級(jí)特大地震影響核蘸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜啸驯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一客扎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧罚斗,春花似錦徙鱼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽厌衙。三九已至,卻和暖如春绞绒,著一層夾襖步出監(jiān)牢的瞬間婶希,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國打工蓬衡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留喻杈,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓狰晚,卻偏偏與公主長得像筒饰,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子壁晒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

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

  • 一龄砰、FMDB簡介 什么是FMDBFMDB是iOS平臺(tái)的SQLite數(shù)據(jù)庫 框架FMDB以面向OC的方式封裝了SQL...
    iOS_成才錄閱讀 17,402評(píng)論 11 83
  • 1/3. 向項(xiàng)目中引入FMDB庫,可以使用cocoapods也可以直接手動(dòng)添加讨衣,手動(dòng)添加時(shí)需要自己導(dǎo)入對(duì)libsq...
    莫_名閱讀 812評(píng)論 0 1
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,264評(píng)論 25 707
  • 這張圖是在朋友圈看到的反镇,因?yàn)橐辉缇涂吹脚笥讶Ρ凰⑵凉淘椋恢烙檬裁凑Z言來形容自己的心情,正好這張圖出現(xiàn)了歹茶,這回要做一...
    做個(gè)思行者閱讀 397評(píng)論 4 4
  • 初來乍到夕玩! 是因?yàn)榭吹轿业睦洗蠊?且或者就是應(yīng)該稱呼他z律師吧),這個(gè)與我大學(xué)四年的宿舍老大兼畢業(yè)七年的法學(xué)屆摯友...
    熊哥轉(zhuǎn)型忙閱讀 278評(píng)論 1 0