欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

iOS---常用方法总结

来源: 开发者 投稿于  被查看 42305 次 评论:261

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

[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都没有问题,其它的没有设备,待测试!

 

用户评论