代码小记

最近公司事情不是很多,然后就整理一下自己在工作中比较重要的代码.

单例的使用

/*
 专门用来保存单例代码
 最后一行不要加 \ 
*/

// @interface
#define singleton_interface(className) \
+ (className *)shared##className;


// @implementation
#define singleton_implementation(className) \
static className *_instance; \
+ (id)allocWithZone:(NSZone *)zone \
{ \
    static dispatch_once_t onceToken; \
    dispatch_once(&onceToken, ^{ \
        _instance = [super allocWithZone:zone]; \
    }); \
    return _instance; \
} \
+ (className *)shared##className \
{ \
    static dispatch_once_t onceToken; \
    dispatch_once(&onceToken, ^{ \
        _instance = [[self alloc] init]; \
    }); \
    return _instance; \
}

FMDB的操作(事务+线程安全)

***数据库路径***   
   #define dbPath [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)[0] stringByAppendingPathComponent:@"test.db"]

***创建数据库***
-(BOOL)createDBTable{
    //创建数据库文件
    BOOL result = NO;
    NSFileManager *fileManager = [NSFileManager defaultManager];
    //判断数据时是否存在
    BOOL isExist = [fileManager fileExistsAtPath:dbPath];
    if (!isExist) {
        NSMutableArray *sqlArr = [[NSMutableArray alloc]init];            
        // 创建表-订单的表-master头  obj5:退货才有,关联的原始凭证的sid
        [sqlArr addObject:@"CREATE TABLE IF NOT EXISTS  'master' ('sid' varchar NOT NULL PRIMARY KEY,'imel' varchar,'type' int)"];
        
        // 创建
        result = [self execute:sqlArr];
    }else{
        result = YES;
    }
    return result;
}

***对原有数据库进行增加字段,增加表***
-(BOOL)executeAddnew{
    __block BOOL result = NO;
    FMDatabaseQueue *dbQueue = [[FMDatabaseQueue alloc]initWithPath:dbPath];
    [dbQueue inDatabase:^(FMDatabase *db) {
        [db beginTransaction];
        //增加表
        if (![db tableExists:@"TicketInfo"]) {
            [db executeUpdate:@"CREATE TABLE  IF NOT EXISTS  'TicketInfo' ('ticketSid' varchar  NOT NULL PRIMARY KEY, 'storeNo' varchar, 'posNo' varchar, 'transNo' varchar, 'price' float, 'date' varchar, 'flag' int)"];
        //增加字段
        if ([db tableExists:@"Printer"]) {
            if (![db columnExists:@"Printer" inTableWithName:@"sid"]) {
                [db executeUpdate:@"ALTER TABLE 'Printer' ADD 'sid' varchar"];
            }
        }    
            
        }
        result = [db commit];

    }];
    [dbQueue close];
    return result;
}

***插入多条语句***
-(BOOL)execute:(NSMutableArray*)sqlStrArr
{
    __block BOOL result = NO;
    FMDatabaseQueue *dbQueue = [[FMDatabaseQueue alloc]initWithPath:dbPath];
    [dbQueue inDatabase:^(FMDatabase *db) {
        [db beginTransaction];
        for (NSString *sqlStr in sqlStrArr) {
            BOOL detailResult = [db executeUpdate:sqlStr];
            if (!detailResult) {
                [db rollback];
                break;
            }
        }
        result = [db commit];
    }];
    return result;
}

***插入单条语句***
-(BOOL)executeSingle:(NSString*)sqlStr
{
    __block BOOL result = NO;
    FMDatabaseQueue *dbQueue = [[FMDatabaseQueue alloc]initWithPath:dbPath];
    [dbQueue inDatabase:^(FMDatabase *db) {
        result = [db executeUpdate:sqlStr];
        if (!result) {
            [db rollback];
        }
    }];
    return result;
}

***查询***
-(NSArray *)queryGoodsTypeWithSqlite:(NSString *)sqlite{
    __block NSMutableArray *marray = [[NSMutableArray alloc]initWithCapacity:10];
    FMDatabaseQueue *dbQueue = [[FMDatabaseQueue alloc]initWithPath:dbPath];
    [dbQueue inDatabase:^(FMDatabase *db) {
        FMResultSet *result = [db executeQuery:sqlite];
        while ([result next]) {
            GoodsTypeInfoModel *goodsTypeModel = [[GoodsTypeInfoModel alloc]init];
            goodsTypeModel.goodSid = [result stringForColumn:@"goodSid"];
            [marray addObject: goodsTypeModel];
        }
    }];
    return marray;
}

AFNetworking的封装

时间处理

JSON解析

见GitHub地址:https://github.com/Sunkangp/TOOL

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,038评论 3 119
  • 小编也是喜欢在家里种菜,但是最近看到一个在家里种莲藕的朋友,被森森地震撼到了! 关注“正能量收获”,收获正能量 人...
    正能量收获阅读 1,248评论 0 1
  • 都说德国人严谨认真,守规矩。来这里20天确实感觉到了,但也不是像网上发的那些全都如此。昨晚从巴黎回到汉诺威...
    fieldsky阅读 1,638评论 0 0
  • 1 工作近30年,期间经历了两次合校,一次在22年前,一次在16年前。 22年前的合校是...
    马家春慢阅读 3,674评论 0 1
  • 小婷大学毕业后进了一个不错的单位,朝九晚五,几乎没有工作压力。小婷刚进入公司的时候,因为刚开始接手工作,业务还不是...
    慕安笙阅读 4,865评论 0 1