iOS备忘录

作者: 拉普拉斯妖kk | 来源:发表于2017-02-13 09:20 被阅读68次

    年前加过年这段时间,公司的项目时间紧非常忙,加上自己在做一个iOS的小项目,下班和周末时间就基本没有休息了,这样博客也就懈怠了。

    这里就稍稍总结了一些我写这个小项目时候用上的一些代码片段。一来是给自己做个备忘,二来分享出来希望对大家也有帮助。以后我也会常更新这篇文章的。

    //通过图片Data数据第一个字节 来获取图片扩展名
    - (NSString *)contentTypeForImageData:(NSData *)data {
        uint8_t c;
        [data getBytes:&c length:1];
        switch (c) {
            case 0xFF:
                return @"jpeg";
            case 0x89:
                return @"png";     
            case 0x47:
                return @"gif";        
            case 0x49:   
            case 0x4D:
                return @"tiff";        
            case 0x52:  
                if ([data length] < 12) {
                    return nil;
                }
                NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding];
                if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) {
                    return @"webp";
                }
                return nil;
        }
        return nil;
    }
    
    /** 设置圆形图片(放到分类中使用) */
    - (UIImage *)cutCircleImage {
        UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0);
        // 获取上下文
        CGContextRef ctr = UIGraphicsGetCurrentContext();
        // 设置圆形
        CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height);
        CGContextAddEllipseInRect(ctr, rect);
        // 裁剪
        CGContextClip(ctr);
        // 将图片画上去
        [self drawInRect:rect];
        UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return image;
    }
    
    #define SWWeakSelf(type)  __weak typeof(type) weak##type = type;
    #define SWToast(str) [NSString stringWithFormat:@"%@",str]
    
    // AFNetworking 3.0 设置http头
    AFHTTPSessionManager *manger = [AFHTTPSessionManager manager];
    AFHTTPRequestSerializer *requestSerializer =  [AFJSONRequestSerializer serializer];
    
    NSDictionary *headerFieldValueDictionary = @{@"version":@"1.0"};
    if (headerFieldValueDictionary != nil) {
        for (NSString *httpHeaderField in headerFieldValueDictionary.allKeys) {
            NSString *value = headerFieldValueDictionary[httpHeaderField];
            [requestSerializer setValue:value forHTTPHeaderField:httpHeaderField];
        }
    }
    manger.requestSerializer = requestSerializer;
    [manger GET:@"url" parameters:nil  progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    
       } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    
    }];
    
    // 单例
    + (SWString *)sharedManager{
        static SWString *shared = nil;
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            shared = [[self alloc]init];
        });
        return shared;
    }
    
    // 检测网络状态
    AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
        
        [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
            //这里是监测到网络改变的block
            //在里面可以随便写事件
            switch (status) {
                case AFNetworkReachabilityStatusUnknown:
                    SWLog(@"未知网络状态");
                    break;
                case AFNetworkReachabilityStatusNotReachable:
                    SWLog(@"无网络");
                    break;
                    
                case AFNetworkReachabilityStatusReachableViaWWAN:
                    SWLog(@"蜂窝数据网");
                    break;
                    
                case AFNetworkReachabilityStatusReachableViaWiFi:
                    SWLog(@"WiFi网络");
                    break;
                default:
                    break;
            }
        }] ;
    
    // NSDate转NSString
    + (NSString *)nowDataString{
        NSDate *date = [NSDate date];
        NSDateFormatter *objDateformat = [[NSDateFormatter alloc] init];
        [objDateformat setDateFormat:@"yyyyMMddHHmmss"];
        return [objDateformat stringFromDate: date];
    }
    
    // ios md5
    #import <CommonCrypto/CommonDigest.h>
    
    - (NSString *)MD5:(NSString *)mdStr
    {
        const char *original_str = [mdStr UTF8String];
        unsigned char result[CC_MD5_DIGEST_LENGTH];
        CC_MD5(original_str, strlen(original_str), result);
        NSMutableString *hash = [NSMutableString string];
        for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
            [hash appendFormat:@"%02X", result[i]];
        return [hash lowercaseString];
    }
    
    // ios des加解密
     #import <CommonCrypto/CommonCryptor.h>
    + (NSString *) encryptUseDES:(NSString *)plainText key:(NSString *)key
    {
        NSString *ciphertext = nil;
        const char *textBytes = [plainText UTF8String];
        NSUInteger dataLength = [plainText length];
        unsigned char buffer[1024];
        memset(buffer, 0, sizeof(char));
        Byte iv[] = {1,2,3,4,5,6,7,8};
        size_t numBytesEncrypted = 0;
        CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmDES,
                                              kCCOptionPKCS7Padding,
                                              [key UTF8String], kCCKeySizeDES,
                                              iv,
                                              textBytes, dataLength,
                                              buffer, 1024,
                                              &numBytesEncrypted);
        if (cryptStatus == kCCSuccess) {
            NSData *data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted];
            
            ciphertext = [[[NSString alloc] initWithData:[GTMBase64 encodeData:data] encoding:NSUTF8StringEncoding] autorelease];
        }
        return ciphertext;
    }
     
    //解密
    + (NSString *) decryptUseDES:(NSString*)cipherText key:(NSString*)key 
    {
        NSData* cipherData = [GTMBase64 decodeString:cipherText];
        unsigned char buffer[1024];
        memset(buffer, 0, sizeof(char));
        size_t numBytesDecrypted = 0;
        Byte iv[] = {1,2,3,4,5,6,7,8};
        CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, 
                                              kCCAlgorithmDES, 
                                              kCCOptionPKCS7Padding, 
                                              [key UTF8String], 
                                              kCCKeySizeDES, 
                                              iv, 
                                              [cipherData bytes], 
                                              [cipherData length], 
                                              buffer, 
                                              1024, 
                                              &numBytesDecrypted);
        NSString* plainText = nil;
        if (cryptStatus == kCCSuccess) {
            NSData* data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesDecrypted];
            plainText = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
        }
        return plainText;
    }
    

    未完待续。。。

    相关文章

      网友评论

        本文标题:iOS备忘录

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