코드 소기

4172 단어

요즘 회사에 일이 많지 않으니 업무에서 비교적 중요한 코드를 정리해 보세요.


단례적 사용

/*
           
         \ 
*/

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

좋은 웹페이지 즐겨찾기