美文网首页
代码小记

代码小记

作者: 大胖_康 | 来源:发表于2018-09-27 17:23 被阅读6次

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

单例的使用

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

// @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

相关文章

  • 代码小记

    最近公司事情不是很多,然后就整理一下自己在工作中比较重要的代码. 单例的使用 FMDB的操作(事务+线程安全) A...

  • 代码规范_小记

    命名基础 在⾯面向对象软件库的设计过程中,开发人员经常忽视对类,⽅方法,函数,常量以及其他编程接⼝元素的命名。本节...

  • 代码量小记

    今天一朋友问我这边一个项目大概有多少行代码,我一脸茫然毫无概念,后来在百度上搜索了一下代码行数统计一行命令就查询出...

  • Git『Everything up-to-date』问题解决

    今天提交代码的时候遇到了一个小问题,这里解决了记下小记。 提交代码遇到『Everything up-to-date...

  • iOS 开发小记-01

    最近又开始写不少业务代码了,有些小知识点小坑,用这个系列记录一下。iOS 开发小记-01iOS 开发小记-02 1...

  • iOS 开发小记-02

    最近又开始写不少业务代码了,有些小知识点小坑,用这个系列记录一下。iOS 开发小记-01iOS 开发小记-02 1...

  • Android Tips

    android 小记 GradientDrawable 可以用这个类使用代码来写shape.xml 获取状态栏高度

  • 自定义view实现简单的计时器

    自定义View学习小记 @Alu 先贴代码: }利用Handler+Timer来控制时间,StringBuffer...

  • iOS的Category、Protocol、Delegate的简

    注:这是之前写的OC代码,搬到这里小记一下。现在swift是趋势,可自行转化,重在理解。 运行环境 演示图 代码使...

  • 简书如何添加代码框(新人小教程)

    今天开始在简书了小记了点笔记,结果遇到了不会贴代码的尴尬。特小记一下步骤,为后来人铺块砖头。 (网页模式)1.首先...

网友评论

      本文标题:代码小记

      本文链接:https://www.haomeiwen.com/subject/sxrdiftx.html