iOS---常用方法总结

最近两个月,在开发自己公司的一个静态库,碰到了一些比较奇葩的问题,不过最后都解决了,与大家分享一下我的解决方法

1. sha1加密:

+ (NSString *) sha1:(NSString *)input {

    if (!input || [inputisEqualToString:@""]) {

        return@"";

    }


//    const char *cstr = [input cStringUsingEncoding:NSUTF8StringEncoding];

//    NSData *data = [NSData dataWithBytes:cstr length:input.length];

    // 之所以将上面两行代码更换为如下一行代码,是因为,在加密中文时,发现上面那种会丢失数据

    NSData *data = [inputdataUsingEncoding:NSUTF8StringEncoding];


    uint8_t digest[CC_SHA1_DIGEST_LENGTH];

    CC_SHA1(data.bytes, (unsignedint)data.length, digest);

    NSMutableString *output = [NSMutableStringstringWithCapacity:CC_SHA1_DIGEST_LENGTH *2];

    for(int i=0; i<CC_SHA1_DIGEST_LENGTH; i++) {

        [output appendFormat:@"%02x", digest[i]];

    }

    return output;

}


2. 解析json串

+ (id)getJsonObjectWithJsonStr:(NSString *)jsonStr {

    if (jsonStr ==nil) {

        returnnil;

    }


    //下面两行代码,是为了防止json串中含有一些url encode的特殊字符

    jsonStr = [(NSString *)jsonStrstringByReplacingOccurrencesOfString:@"+"withString:@" "];

    jsonStr = [jsonStr stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];


    NSData *jsonData = [jsonStrdataUsingEncoding:NSUTF8StringEncoding];

    NSError *error;

    id object = [NSJSONSerializationJSONObjectWithData:jsonData options:NSJSONReadingMutableContainerserror:&error];

    if (error) {

        LGLog(@"json解析失败:%@", error);

        returnnil;

    }

    return object;

}


3. 判断string中是否含有中文字符

+ (BOOL)IsChinese:(NSString *)str {

    for(int i=0; i< [strlength];i++) {

        int a = [strcharacterAtIndex:i];

        if( a >0x4e00 && a < 0x9fff) {

            returnYES;

        }

    } returnNO;

}


4. 判断越狱机器,因为越狱的设备都会安装有cydia

+ (BOOL)isJailBreak

{

    if ([[UIApplicationsharedApplication] canOpenURL:[NSURLURLWithString:@"cydia://"]]) {

        NSLog(@"The device is jail broken!");

        returnYES;

    }

    NSLog(@"The device is NOT jail broken!");

    returnNO;

}


5. 根据文本内容,动态计算label高度

指定label的width后,调用 [label sizeToFit]方法即可,在iPhone5s、iPhone6、iPhone6 Plus都没有问题,其它的没有设备,待测试!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值