Initial commit

This commit is contained in:
ifish
2017-08-15 16:59:01 +08:00
commit bdc83e07ef
5766 changed files with 423223 additions and 0 deletions
Binary file not shown.
@@ -0,0 +1,48 @@
//
// IfishAddGoldRuleType.h
// Ifish
//
// Created by imac on 17/3/10.
// Copyright © 2017年 lianlian. All rights reserved.
//
#ifndef IfishAddGoldRuleType_h
#define IfishAddGoldRuleType_h
//金币
#define EVERYDAYSIGNIN @"everyDaySignin"
#define READINFORMATION @"readInformation"
#define OPENGOODSLINK @"openGoodsLink"
#define ROOMLEAVEMSG @"roomLeaveMsg"
#define IFISHCOMMUNITY @"ifishCommunity"
#define SHARECAMERAPICTURE @"shareCameraPicture"
#define SHARELOOKREPORT @"shareLookReport"
#define SHAREIFISHAPP @"shareIfishApp"
#define RENAME @"rename"
#define OPLOADHEADIMG @"uploadHeadImg"
#define OPENSHARECAMERA @"openShareCamera"
#define CHIOCELOOKSHOPS @"choiceLookShops"
#define IFISHDOCTOR @"ifishDoctor"
#define IFISHADDGOLDTYPE0 @"everyDay"
#define IFISHADDGOLDTYPE1 @"once"
//经验
#define IFISHADDEXPTYPE0 @"everyDay"
#define IFISHADDEXPTYPE1 @"once"
#define IFISHADDEXP_BIDCAMERA @"bindCamera"
#define IFISHADDEXP_BIDDEVICE @"bindDevice"
#define IFISHADDEXP_LOGIN @"everyDayLogin"
//任务
#define IFISHTASK_ARR @"IfishTaskArray"
#define IFISHTASK_HAVEDONEALL @"ifishTaskAllDone"
//注册成功 登录云信
#define IFISHIMLOGINSUCSESS @"ifishIMuserLoginSucsses"
#endif /* IfishAddGoldRuleType_h */
@@ -0,0 +1,29 @@
//
// IfishHelperUtils.h
// Ifish
//
// Created by imac on 16/12/7.
// Copyright © 2016年 lianxiang. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface IfishHelperUtils : NSObject
+(NSString*)formatCameraPalybackTime:(NSInteger)minute second:(NSInteger)second;
//字符串中提取数字并获取其下标
+(NSRange)getIndexFromString:(NSString *)str;
+(NSString *)getLeveloacalImgName:(NSString *)gradNum;
//判断每日任务近日是否要屌用接口 加金币
+(BOOL)dignoseIsRequestDataToday:(NSString *)ruleType;
//判断是否调用加经验接口
+(BOOL)dignoseIsAddExpToday:(NSString *)ruleType;
//更新任务列表数据
+(void)updateTask:(NSString *)ruleType;
//未完成 任务
+(NSInteger)getUnDoneTaskCount;
@end
+170
View File
@@ -0,0 +1,170 @@
//
// IfishHelperUtils.m
// Ifish
//
// Created by imac on 16/12/7.
// Copyright © 2016年 lianxiang. All rights reserved.
//
#import "IfishHelperUtils.h"
#import "IfishUserDefaultHelper.h"
#import "IifishGetGoldTaskHelper.h"
#import "IifshGetExpHelper.h"
@implementation IfishHelperUtils
+(NSString*)formatCameraPalybackTime:(NSInteger)minute second:(NSInteger)second{
NSString *timeLabe=@"";
if (second<10 &&minute<10) {
timeLabe=[NSString stringWithFormat:@"0%ld:0%ld",(long)minute,(long)second];
}else if (second>=10 && minute<10){
timeLabe=[NSString stringWithFormat:@"0%ld:%ld",(long)minute,(long)second];
}else if (second<10 && minute>=10){
timeLabe=[NSString stringWithFormat:@"%ld:0%ld",(long)minute,(long)second];
}else if (second>=10 && minute>=10){
timeLabe=[NSString stringWithFormat:@"%ld:%ld",(long)minute,(long)second];
}
return timeLabe;
}
//此方法仅适配 经验值 获取方式 的label
+(NSRange)getIndexFromString:(NSString *)str
{
NSRange range =NSMakeRange(0, 1);
NSScanner *scanner = [NSScanner scannerWithString:str];
[scanner scanUpToCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet] intoString:nil];
int number;
[scanner scanInt:&number];
//NSLog(@"number : %d", number);
NSString *numberstr =[NSString stringWithFormat:@"%d",number];
if (numberstr.length==0) {
return range;
}else if (numberstr.length==1){
}else if (numberstr.length>=1&&numberstr.length<10){
//经验值1位
numberstr = [numberstr substringFromIndex:numberstr.length -1];
}else
{ //经验值2位
numberstr = [numberstr substringFromIndex:numberstr.length -2];
}
range = [str rangeOfString:numberstr];
return range;
}
+(NSString *)getLeveloacalImgName:(NSString *)gradNum
{
NSString *imgName =nil;
if ([gradNum intValue]==2) {
imgName = @"levelUp_fish";
}else if ([gradNum intValue]==3){
imgName = @"levelUp_crab";
}else if ([gradNum intValue]==4){
imgName = @"levelUp_yashark";
}else if ([gradNum intValue]==5){
imgName = @"levelUp_totoise";
}else if ([gradNum intValue]==6){
imgName = @"levelUp_xiaodragon";
}else if ([gradNum intValue]==7){
imgName = @"levelUp_dragon";
}
return imgName;
}
//+(BOOL)diagnoseIsAddValue
//{
// NSString *now = [dataContorl getYearmonthaddDay];
// IfishUserAsset *userAsset = [dataContorl getAllIfishUserAsset];
//
// NSString *defaultDate = userAsset.lastLoginDate;
// if ([defaultDate isKindOfClass:[NSNull class]]||!defaultDate) {
// return YES;
// }
// if ([now isEqualToString:defaultDate]) {
// return NO;
// }
//
// return YES;
//}
+(BOOL)dignoseIsRequestDataToday:(NSString *)ruleType
{
IfishUserAsset *userAsset = [dataContorl getAllIfishUserAsset];
NSString *olddate = userAsset.lastLoginDate;
NSString *newdate = [IifishGetGoldTaskHelper getEveryDayTaskAddGoldDateWithRuleType:ruleType];
if (newdate) {
if ([olddate isEqualToString:newdate]) {
return NO;
}
}
// newdate ==nil 时默认可以调用
return YES;
}
+(BOOL)dignoseIsAddExpToday:(NSString *)ruleType
{
IfishUserAsset *userAsset = [dataContorl getAllIfishUserAsset];
NSString *olddate = userAsset.lastLoginDate;
NSString *newdate = [IifshGetExpHelper getEveryDayExpDateWithRuleType:ruleType];
if (newdate) {
if ([olddate isEqualToString:newdate]) {
return NO;
}
}
// newdate ==nil 时默认可以调用
return YES;
}
+(void)updateTask:(NSString *)ruleType
{
NSArray * arr = [[DataCenter defaultDtacenter] valueForKey:IFISHTASK_ARR];
NSMutableArray *newArr =[[NSMutableArray alloc] init];
for (IfishTaskModel *mode in arr) {
if ([mode.ruleType isEqualToString:ruleType]) {
mode.isDone = YES;
//mode.addGoldValue = [addvalue integerValue];
}
[newArr addObject:mode];
}
[[DataCenter defaultDtacenter] setValue:newArr forKey:IFISHTASK_ARR];
}
+(NSInteger)getUnDoneTaskCount{
NSArray *task =[[DataCenter defaultDtacenter] valueForKey:IFISHTASK_ARR];
NSInteger intervalue =0;
NSInteger total =0;
if (![task isKindOfClass:[NSNull class]] && task) {
total =task.count;
for (IfishTaskModel *mode in task) {
if (mode.isDone) {
intervalue ++;
}
}
}
NSInteger unDone = total - intervalue;
return unDone;
}
@end
@@ -0,0 +1,29 @@
//
// IfishUserObsever.h
// Ifish
//
// Created by imac on 17/3/3.
// Copyright © 2017年 lianlian. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface IfishUserObsever : NSObject
@property (nonatomic,strong) IfishUserAsset *userAsset;
+ (IfishUserObsever *)sharedInstance;
//-(void)userAssetAddObserver;
//新增经验接口调用 ruleTyp 新增经验规则
-(void)xinZengJingYanZhi:(NSString *)ruleTyp addType:(NSString*)addType;
//新增金币接口调用
-(void)addGoldWith:(NSString *)ruleType addType:(NSString*)addType;
//新增金币tost
-(void)showAddGoldWith:(NSString *)addValue;
// 经验 tost
-(void)showAddExp:(NSString *)addValue;
//升级
-(void)showLevelUpWith:(NSString*)newValue;
@end
+179
View File
@@ -0,0 +1,179 @@
//
// IfishUserObsever.m
// Ifish
//
// Created by imac on 17/3/3.
// Copyright © 2017年 lianlian. All rights reserved.
//
#import "IfishUserObsever.h"
#import "IfishLevelUpView.h"
#import "IfishHelperUtils.h"
#import "IfishUserDefaultHelper.h"
#import "IfishGoldAndExpTostView.h"
#import "IifishGetGoldTaskHelper.h"
#import "IifshGetExpHelper.h"
@implementation IfishUserObsever
+ (IfishUserObsever *)sharedInstance
{
static IfishUserObsever *sharedInstace = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstace = [[self alloc] init];
sharedInstace.userAsset = [dataContorl getAllIfishUserAsset];
});
return sharedInstace;
}
//备用KVO
-(void)userAssetAddObserver
{
//self.userAsset = [dataContorl getAllIfishUserAsset];
//[self.userAsset addObserver:self forKeyPath:@"gradeNum" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
if([keyPath isEqualToString:@"gradeNum"])
{
//NSString *newValue = change[@"new"];
//BOOL isUP = [IfishHelperUtils diagnoseLevelIsUp:newValue];
//if (isUP) {
// [self addAdViewWith:newValue];
//}
NSLog(@"change**************%@",change);
}
}
-(void)showLevelUpWith:(NSString*)newValue{
IfishLevelUpView *levelUpView =[[IfishLevelUpView alloc] initWithFrame:[UIApplication sharedApplication].keyWindow.bounds];
levelUpView.imgName = [IfishHelperUtils getLeveloacalImgName:newValue];
[[UIApplication sharedApplication].keyWindow addSubview:levelUpView];
}
-(void)dealloc{
//[self.userAsset removeObserver:self forKeyPath:@"gradeNum"];
}
//增加经验
-(void)xinZengJingYanZhi:(NSString *)ruleTyp addType:(NSString*)addType
{
// 每日加经验接口是否调用 一次性加经验不做处理直接请求
if ([addType isEqualToString:IFISHADDEXPTYPE0]) {
BOOL iscanAdd = [IfishHelperUtils dignoseIsAddExpToday:ruleTyp];
if (!iscanAdd) {
return;
}
}
NSString *userId =[dataContorl dataControlGetUserIdInfo];
__weak typeof (self) weakself = self;
[AFHttpTool addLevelValueWith:userId ruleType:ruleTyp success:^(id response) {
NSDictionary *reDic=[NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableContainers error:nil];
if ([reDic[@"result"] isEqualToString:@"100"]){
NSDictionary *data=reDic[@"data"];
if (![data isKindOfClass:[NSNull class]]&&data) {
IfishUserAsset *userAsset = [[IfishUserAsset alloc] initWithDict:data];
[dataContorl resetUserAsset:userAsset];
//每日加经验 完成后 mark 一下
if ([addType isEqualToString:IFISHADDEXPTYPE0]) {
[IifshGetExpHelper everyDayExpMark:userAsset.lastLoginDate withRuleType:ruleTyp];
}
NSString *oldGradeNum = [IfishUserDefaultHelper getDefualtGradNum];
NSString *gradeNum = userAsset.gradeNum;
NSLog(@"oldGradeNum%@",oldGradeNum);
//加经验 tost
NSString *addvalue = [NSString stringWithFormat:@"%ld",(long)userAsset.addValue];
//一次性任务 addValue 0 不show
if (userAsset.addValue !=0) {
[weakself showAddExp:addvalue];
}
if ([oldGradeNum intValue]<[gradeNum intValue]){
[weakself showLevelUpWith:gradeNum];
[IfishUserDefaultHelper chageLevlelGrad:gradeNum];
}
}
}else{
[[UIApplication sharedApplication].keyWindow makeToast:@"添加经验请求出错"];
}
} failure:^(NSError *err) {
}];
}
-(void)addGoldWith:(NSString *)ruleType addType:(NSString*)addType
{
//判断是否今天任务 每日任务判断 是否完成 一次性任务不做处理直接请求
if ([addType isEqualToString:IFISHADDGOLDTYPE0]) {
BOOL iscanAdd = [IfishHelperUtils dignoseIsRequestDataToday:ruleType];
if (!iscanAdd) {
return;
}
}
NSString *userId =[dataContorl dataControlGetUserIdInfo];
__weak typeof (self) weakself = self;
[AFHttpTool addGoldValue:userId ruleType:ruleType success:^(id response) {
NSDictionary *reDic=[NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableContainers error:nil];
if ([reDic[@"result"] isEqualToString:@"100"]){
NSDictionary *data=reDic[@"data"];
if (![data isKindOfClass:[NSNull class]]&&data) {
IfishUserAsset *userAsset = [[IfishUserAsset alloc] initWithDict:data];
[dataContorl resetUserAsset:userAsset];
//每日任务 完成后 mark 一下 保证每日一次
NSString *date = userAsset.lastLoginDate;
if ([addType isEqualToString:IFISHADDGOLDTYPE0]) {
[IifishGetGoldTaskHelper everyDayTaskMark:date withRuleType:ruleType];
}
//加金币 tost
NSString *addvalue = [NSString stringWithFormat:@"%ld",(long)userAsset.addValue];
// addValue 0 不show
if (userAsset.addValue !=0) {
[weakself showAddGoldWith:addvalue];
//更新任务列表数据 签到的数据在签到接口中处理
[IfishHelperUtils updateTask:ruleType];
}
}
}else{
[[UIApplication sharedApplication].keyWindow makeToast:@"添加金币请求出错"];
}
} failure:^(NSError *err) {
}];
}
-(void)showAddGoldWith:(NSString *)addValue
{
IfishGoldAndExpTostView *levelUpView =[[IfishGoldAndExpTostView alloc] initWithFrame:[UIApplication sharedApplication].keyWindow.bounds];
[[UIApplication sharedApplication].keyWindow addSubview:levelUpView];
[levelUpView showGoldToastView:addValue];
}
-(void)showAddExp:(NSString *)addValue
{
IfishGoldAndExpTostView *levelUpView =[[IfishGoldAndExpTostView alloc] initWithFrame:[UIApplication sharedApplication].keyWindow.bounds];
[[UIApplication sharedApplication].keyWindow addSubview:levelUpView];
[levelUpView showExpTostView:addValue];
}
@end
@@ -0,0 +1,17 @@
//
// IifishGetGoldTaskHelper.h
// Ifish
//
// Created by imac on 17/3/10.
// Copyright © 2017年 lianlian. All rights reserved.
//
#import <Foundation/Foundation.h>
//存储每条任务当日完成时日期 判断做任务接口是否调用 保证每天 每日任务 只请求一次
@interface IifishGetGoldTaskHelper : NSObject
+(void)everyDayTaskMark:(NSString *)date withRuleType:(NSString *)ruleType;
+(NSString *)getEveryDayTaskAddGoldDateWithRuleType:(NSString *)ruleType;
@end
@@ -0,0 +1,84 @@
//
// IifishGetGoldTaskHelper.m
// Ifish
//
// Created by imac on 17/3/10.
// Copyright © 2017年 lianlian. All rights reserved.
//
#import "IifishGetGoldTaskHelper.h"
@implementation IifishGetGoldTaskHelper
+(void)everyDayTaskMark:(NSString *)date withRuleType:(NSString *)ruleType
{
NSUserDefaults*userdefult=[NSUserDefaults standardUserDefaults];
//任务 每日签到 everyDaySignin
if ([ruleType isEqualToString:EVERYDAYSIGNIN]) {
[userdefult setObject:date forKey:EVERYDAYSIGNIN];
}else if ([ruleType isEqualToString:READINFORMATION]){
// 阅读资讯 readInformation
[userdefult setObject:date forKey:READINFORMATION];
}else if ([ruleType isEqualToString:OPENGOODSLINK]){
// 打开淘宝链接 openGoodsLink
[userdefult setObject:date forKey:OPENGOODSLINK];
}else if ([ruleType isEqualToString:ROOMLEAVEMSG]){
// 看看留言 roomLeaveMsg
[userdefult setObject:date forKey:ROOMLEAVEMSG];
}else if ([ruleType isEqualToString:IFISHCOMMUNITY]){
// 进入社区 ifishCommunity
[userdefult setObject:date forKey:IFISHCOMMUNITY];
}else if ([ruleType isEqualToString:SHARECAMERAPICTURE]){
// 分享截图 shareCameraPicture
[userdefult setObject:date forKey:SHARECAMERAPICTURE];
}else if ([ruleType isEqualToString:SHARELOOKREPORT]){
// 分享看护报告 shareLookReport
[userdefult setObject:date forKey:SHARELOOKREPORT];
}else if ([ruleType isEqualToString:SHAREIFISHAPP]){
// 分享app shareIfishApp
[userdefult setObject:date forKey:SHAREIFISHAPP];
}
//rename openShareCamera 。。都是一次性任务可不做处理
[userdefult synchronize];
}
+(NSString *)getEveryDayTaskAddGoldDateWithRuleType:(NSString *)ruleType
{
NSUserDefaults*userdefult=[NSUserDefaults standardUserDefaults];
NSString *date = nil;
//任务 每日签到 everyDaySignin
if ([ruleType isEqualToString:EVERYDAYSIGNIN]) {
date = [userdefult objectForKey:EVERYDAYSIGNIN];
}else if ([ruleType isEqualToString:READINFORMATION]){
// 阅读资讯 readInformation
date = [userdefult objectForKey:READINFORMATION];
}else if ([ruleType isEqualToString:OPENGOODSLINK]){
// 打开淘宝链接 openGoodsLink
date = [userdefult objectForKey:OPENGOODSLINK];
}else if ([ruleType isEqualToString:ROOMLEAVEMSG]){
// 看看留言 roomLeaveMsg
date = [userdefult objectForKey:ROOMLEAVEMSG];
}else if ([ruleType isEqualToString:IFISHCOMMUNITY]){
// 进入社区 ifishCommunity
date = [userdefult objectForKey:IFISHCOMMUNITY];
}else if ([ruleType isEqualToString:SHARECAMERAPICTURE]){
// 分享截图 shareCameraPicture
date = [userdefult objectForKey:SHARECAMERAPICTURE];
}else if ([ruleType isEqualToString:SHARELOOKREPORT]){
// 分享看护报告 shareLookReport
date = [userdefult objectForKey:SHARELOOKREPORT];
}else if ([ruleType isEqualToString:SHAREIFISHAPP]){
// 分享爱鱼奇 shareIfishApp
date = [userdefult objectForKey:SHAREIFISHAPP];
}
[userdefult synchronize];
return date;
}
@end
@@ -0,0 +1,18 @@
//
// IifshGetExpHelper.h
// Ifish
//
// Created by imac on 17/3/10.
// Copyright © 2017年 lianlian. All rights reserved.
//
#import <Foundation/Foundation.h>
//每日经验 增加纪录 用于判断是否 调用每日经验接口
//只 记录 addType = everyDay 的 once 不做处理
@interface IifshGetExpHelper : NSObject
+(void)everyDayExpMark:(NSString *)date withRuleType:(NSString *)ruleType;
+(NSString *)getEveryDayExpDateWithRuleType:(NSString *)ruleType;
@end
@@ -0,0 +1,34 @@
//
// IifshGetExpHelper.m
// Ifish
//
// Created by imac on 17/3/10.
// Copyright © 2017年 lianlian. All rights reserved.
//
#import "IifshGetExpHelper.h"
@implementation IifshGetExpHelper
+(void)everyDayExpMark:(NSString *)date withRuleType:(NSString *)ruleType
{
NSUserDefaults*userdefult=[NSUserDefaults standardUserDefaults];
if ([ruleType isEqualToString:IFISHADDEXP_LOGIN]) {
[userdefult setObject:date forKey:IFISHADDEXP_LOGIN];;
}
[userdefult synchronize];
}
+(NSString *)getEveryDayExpDateWithRuleType:(NSString *)ruleType
{
NSUserDefaults*userdefult=[NSUserDefaults standardUserDefaults];
NSString *date = nil;
if ([ruleType isEqualToString:IFISHADDEXP_LOGIN]) {
[userdefult setObject:date forKey:IFISHADDEXP_LOGIN];;
}
[userdefult synchronize];
return date;
}
@end
+59
View File
@@ -0,0 +1,59 @@
//
// dataContorl.h
// Ifish
//
// Created by imac on 15/10/13.
// Copyright © 2015年 imac. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "IfishUserAsset.h"
@interface dataContorl : NSObject
+(NSString *) dataToHexString:(NSData*)data;
+(NSData *) stringToHexData:(NSString*)string;
+(NSString *)hexStringFromString:(NSString *)string;
+(NSString *)ToHex:(long long int)tmpid;
+(UInt64)hexToTen:(NSString*)str;
+ (NSString *)stringFromHexString:(NSString *)hexString;
+(NSString*)dateStringToHexString:(NSString *)dateString;
+(NSString*)tpIntStringToFourHex:(int)intString;
+(NSString*)hexStringToDateString:(NSString*)hexString;
+(NSString *)translation:(NSString *)arebic;
//随机生成32位字符
+(NSString *)get10LengthString;
+(NSString *)getCurrentSyatemTime;
+ (BOOL)valiMobile:(NSString *)mobile;
+ (NSString*)areaCode:(NSString *)phoneNumb;
//获取用户ID string类型
+(NSString *)dataControlGetUserIdInfo;
+(NSArray *)getallCameras;
+(void)saveCameraArr:(NSArray*)cameraArr;
+(NSArray *)getallDevices;
+(UserModel*)getUserInfo;
+(void)resetUser:(UserModel *)model;
//获取金币经验等级 数据
//归档弊端修改值麻烦 后边优化使用sql3
+(IfishUserAsset*)getAllIfishUserAsset;
+(void)resetUserAsset:(IfishUserAsset *)model;
+ (UIImage *)handleImage:(UIImage *)originalImage withSize:(CGSize)size;
//获取年月日
+(NSString *)getYearmonthaddDay;
//获取年月日 时分
+(NSDate*)formatDateTime:(NSString *)timerstr;
//时分
+(NSString *)getHmWithDate:(NSDate *)date;
//年月日
+(NSString *)getYearmonthaddDayWithDate:(NSDate *)date;
//月日
+(NSString *)getMonthAndDay:(NSDate *)date;
+(BOOL)isIncludeSpecialCharact:(NSString *)str;
@end
+590
View File
@@ -0,0 +1,590 @@
//
// dataContorl.m
// Ifish
//
// Created by imac on 15/10/13.
// Copyright © 2015年 imac. All rights reserved.
//
#import "dataContorl.h"
@implementation dataContorl
// NSdata进制转十六进制字符串
+(NSString *) dataToHexString:(NSData*)data
{
NSUInteger len = [data length];
char * chars = (char *)[data bytes];
NSMutableString * hexString = [[NSMutableString alloc] init];
for(NSUInteger i = 0; i < len; i++ )
[hexString appendString:[NSString stringWithFormat:@"%0.2hhx", chars[i]]];
return hexString;
}
// 十六进制字符串转NSdata进制
+(NSData *) stringToHexData:(NSString*)string{
NSInteger len = [string length] / 2; // Target length
unsigned char *buf = malloc(len);
unsigned char *whole_byte = buf;
char byte_chars[3] = {'\0','\0','\0'};
int i;
for (i=0; i < [string length] / 2; i++) {
byte_chars[0] = [string characterAtIndex:i*2];
byte_chars[1] = [string characterAtIndex:i*2+1];
*whole_byte = strtol(byte_chars, NULL, 16);
whole_byte++;
}
NSData *data = [NSData dataWithBytes:buf length:len];
free( buf );
return data;
}
// 普通字符串转为十六进制
+(NSString *)hexStringFromString:(NSString *)string{
NSData *myD = [string dataUsingEncoding:NSUTF8StringEncoding];
Byte *bytes = (Byte *)[myD bytes];
//下面是Byte 转换为16进制。
NSString *hexStr=@"";
for(int i=0;i<[myD length];i++)
{
NSString *newHexStr = [NSString stringWithFormat:@"%x",bytes[i]&0xff];///16进制数
if([newHexStr length]==1)
hexStr = [NSString stringWithFormat:@"%@0%@",hexStr,newHexStr];
else
hexStr = [NSString stringWithFormat:@"%@%@",hexStr,newHexStr];
}
return hexStr;
}
// 十 转十六
+(NSString *)ToHex:(long long int)tmpid
{
NSString *nLetterValue;
NSString *str =@"";
long long int ttmpig;
for (int i = 0; i<9; i++) {
ttmpig=tmpid%16;
tmpid=tmpid/16;
switch (ttmpig)
{
case 10:
nLetterValue =@"A";break;
case 11:
nLetterValue =@"B";break;
case 12:
nLetterValue =@"C";break;
case 13:
nLetterValue =@"D";break;
case 14:
nLetterValue =@"E";break;
case 15:
nLetterValue =@"F";break;
default:nLetterValue=[[NSString alloc]initWithFormat:@"%lli",ttmpig];
}
str = [nLetterValue stringByAppendingString:str];
if (tmpid == 0) {
break;
}
}
return str;
}
// 十六转十
+(UInt64)hexToTen:(NSString*)str{
// unsigned long long result = 0;
//
// NSScanner *scanner = [NSScanner scannerWithString:data];
//
// [scanner scanHexLongLong:&result];
// return scanner;
UInt64 mac1 = 0;
if (str) {
mac1 = strtoul([str UTF8String], 0, 16);
}
return mac1;
}
// 十六转串
+ (NSString *)stringFromHexString:(NSString *)hexString { //
char *myBuffer = (char *)malloc((int)[hexString length] / 2 + 1);
bzero(myBuffer, [hexString length] / 2 + 1);
for (int i = 0; i < [hexString length] - 1; i += 2) {
unsigned int anInt;
NSString * hexCharStr = [hexString substringWithRange:NSMakeRange(i, 2)];
NSScanner * scanner = [[NSScanner alloc] initWithString:hexCharStr];
[scanner scanHexInt:&anInt];
myBuffer[i / 2] = (char)anInt;
}
NSString *unicodeString = [NSString stringWithCString:myBuffer encoding:4];
NSLog(@"------字符串=======%@",unicodeString);
return unicodeString;
}
//时间转四位十六进制 如01:15——> 010f
+(NSString*)dateStringToHexString:(NSString *)dateString{
//NSString*hour=[dateString substringWithRange:NSMakeRange(0, 2)];// 0~23 小时
NSRange range=[dateString rangeOfString:@":"];
NSString*hour=[dateString substringToIndex:range.location];
// NSString*minite=[dateString substringWithRange:NSMakeRange(3, 2)];// 0~59 分钟
NSString*minite=[dateString substringFromIndex:range.location+1];
NSString*hexHour=@"";//
NSString*hexMinite=@"";
// if ([hour hasPrefix:@"0"]) {
// hexHour=[NSString stringWithFormat:@"0%@",[[NSString alloc] initWithFormat:@"%1x",[hour intValue]]];
// // NSLog(@"hex0带 %@",hexHour);
//
//
// }else{
hexHour=[NSString stringWithFormat:@"%@",[[NSString alloc] initWithFormat:@"%1x",[hour intValue]]];
// NSLog(@"hex %@",hexHour);
// }
if ([minite hasPrefix:@"0"]) {
hexMinite=[NSString stringWithFormat:@"0%@",[[NSString alloc] initWithFormat:@"%1x",[minite intValue]]];
}else{
hexMinite=[NSString stringWithFormat:@"%@",[[NSString alloc] initWithFormat:@"%1x",[minite intValue]]];;
}
if (hexHour.length==1) {
hexHour=[NSString stringWithFormat:@"0%@",hexHour];
}
if (hexMinite.length==1) {
hexMinite=[NSString stringWithFormat:@"0%@",hexMinite];
}
NSString*fomatString=[NSString stringWithFormat:@"%@%@",hexHour,hexMinite];
return fomatString;
}
//1-40C 十进制温度数据 转四位 十六进制数据串
// 1C 1*10 / 10C 10*10 /20C 20*10/ 26C 26*10
// 10-000a 100-0064 200-00C8 260-0104
+(NSString*)tpIntStringToFourHex:(int)intString{
NSString*siWeihexString=@"";
if (intString==10) {
NSString*hexString=[NSString stringWithFormat:@"%@",[[NSString alloc]initWithFormat:@"%1x",intString]];
siWeihexString=[NSString stringWithFormat:@"000%@",hexString];
}else if (intString>10&&intString<260)
{
NSString*hexString=[NSString stringWithFormat:@"%@",[[NSString alloc]initWithFormat:@"%1x",intString]];
siWeihexString=[NSString stringWithFormat:@"00%@",hexString];
}else if (intString>=260)
{
NSString*hexString=[NSString stringWithFormat:@"%@",[[NSString alloc]initWithFormat:@"%1x",intString]];
siWeihexString=[NSString stringWithFormat:@"0%@",hexString];
}
return siWeihexString;
}
//四位 十六进制转时间 如 010f——> 01:15
+(NSString*)hexStringToDateString:(NSString*)hexString{
NSString*shiString=@"";
NSString*fenString=@"";
UInt64 shi =strtoul([[hexString substringWithRange:NSMakeRange(0, 2)] UTF8String], 0, 16);
shiString=[NSString stringWithFormat:@"%llu",shi];
// NSLog(@"str2 %@",shiString);
UInt64 fen = strtoul([[hexString substringWithRange:NSMakeRange(2, 2)] UTF8String], 0, 16);
if (fen<=9) {
fenString=[NSString stringWithFormat:@"0%llu",fen
];
// NSLog(@"str3 %@",fenString);
}else{
fenString=[NSString stringWithFormat:@"%llu",fen
];
// NSLog(@"str4 %@",fenString);
}
NSString*formatString=[NSString stringWithFormat:@"%@:%@",shiString,fenString];
//NSLog(@"str5 %@",formatString);
return formatString;
}
//阿拉伯数字转化为汉语数字
+(NSString *)translation:(NSString *)arebic
{ NSString *str = arebic;
NSArray *arabic_numerals = @[@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"0"];
NSArray *chinese_numerals = @[@"一",@"二",@"三",@"四",@"五",@"六",@"七",@"八",@"九",@"零"];
NSArray *digits = @[@"个",@"十",@"百",@"千",@"万",@"十",@"百",@"千",@"亿",@"十",@"百",@"千",@"兆"];
NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:chinese_numerals forKeys:arabic_numerals];
NSMutableArray *sums = [NSMutableArray array];
for (int i = 0; i < str.length; i ++) {
NSString *substr = [str substringWithRange:NSMakeRange(i, 1)];
NSString *a = [dictionary objectForKey:substr];
NSString *b = digits[str.length -i-1];
NSString *sum = [a stringByAppendingString:b];
if ([a isEqualToString:chinese_numerals[9]])
{
if([b isEqualToString:digits[4]] || [b isEqualToString:digits[8]])
{
sum = b;
if ([[sums lastObject] isEqualToString:chinese_numerals[9]])
{
[sums removeLastObject];
}
}else
{
sum = chinese_numerals[9];
}
if ([[sums lastObject] isEqualToString:sum])
{
continue;
}
}
[sums addObject:sum];
}
NSString *sumStr = [sums componentsJoinedByString:@""];
NSString *chinese = [sumStr substringToIndex:sumStr.length-1];
NSLog(@"%@",str);
NSLog(@"%@",chinese);
return chinese;
}
+(NSString *)get10LengthString
{
NSString *string = [[NSString alloc]init];
for (int i = 0; i < 10; i++) {
int number = arc4random() % 36;
if (number < 10) {
int figure = arc4random() % 10;
NSString *tempString = [NSString stringWithFormat:@"%d", figure];
string = [string stringByAppendingString:tempString];
}else {
int figure = (arc4random() % 26) + 97;
char character = figure;
NSString *tempString = [NSString stringWithFormat:@"%c", character];
string = [string stringByAppendingString:tempString];
}
}
return string;
}
//获取时间戳 当前时间long型的毫秒数除以1000
+(NSString *)getCurrentSyatemTime
{
//获取系统当前的时间戳 秒级
NSDate* dat = [NSDate dateWithTimeIntervalSinceNow:0];
NSTimeInterval time=[dat timeIntervalSince1970];
long longTime = (long)time;
NSString *timeString = [NSString stringWithFormat:@"%ld",longTime];
return timeString;
}
+(NSString *)getYearmonthaddDay{
NSDate * date=[NSDate date];
NSDateFormatter *dateFormatter=[[NSDateFormatter alloc]init];
dateFormatter.dateFormat=@"yyyy-MM-dd";
NSString *foamtDate = [dateFormatter stringFromDate:date];
return foamtDate;
}
+(NSString *)getMonthAndDay:(NSDate *)date{
NSDate * day=[NSDate date];
NSDateFormatter *dateFormatter=[[NSDateFormatter alloc]init];
dateFormatter.dateFormat=@"MM-dd";
NSString *foamtDate = [dateFormatter stringFromDate:day];
return foamtDate;
}
+(NSString *)getHmWithDate:(NSDate *)date{
NSDateFormatter *dateFormatter=[[NSDateFormatter alloc]init];
dateFormatter.dateFormat=@"HH:mm";
NSString *foamtDate = [dateFormatter stringFromDate:date];
return foamtDate;
}
+(NSString *)getYearmonthaddDayWithDate:(NSDate *)date{
NSDateFormatter *dateFormatter=[[NSDateFormatter alloc]init];
dateFormatter.dateFormat=@"yyyy-MM-dd";
NSString *foamtDate = [dateFormatter stringFromDate:date];
return foamtDate;
}
//判断手机号码格式是否正确
+ (BOOL)valiMobile:(NSString *)mobile
{
NSString * MOBILE = @"^[1][3-8]\\d{9}$|^([6|9])\\d{7}$|^[0][9]\\d{8}$|^[6]([8|6])\\d{5}$";
NSPredicate*regextestmobile=[NSPredicate predicateWithFormat:@"SELF MATCHES %@",MOBILE];
BOOL isMacth=[regextestmobile evaluateWithObject:mobile];
/* 正则表达式:^[1][3-8]\\d{9}$|^([6|9])\\d{7}$|^[0][9]\\d{8}$|^[6]([8|6])\\d{5}$
规则说明:
中国大陆:开头1 3-8号段,后边跟9位数字
台湾:09开头后面跟8位数字
香港:9或6开头后面跟7位数字
澳门:66或68开头后面跟5位数字
注意:以上表达式只验证港澳台及大陆手机号码,不包含座机小灵通及区号等验证
*/
if (isMacth) {
return YES;
}else{
return NO;
}
}
+ (NSString*)areaCode:(NSString *)phoneNumb{
NSString *zone= nil;
//中国大陆:开头1 3-8号段
NSString *prenumb = [phoneNumb substringWithRange:NSMakeRange(0, 2)];
NSString * MOBILE1 = @"^[1][3-8]$";
NSPredicate*regextestmobile1=[NSPredicate predicateWithFormat:@"SELF MATCHES %@",MOBILE1];
BOOL isMacth1=[regextestmobile1 evaluateWithObject:prenumb];
// 台湾:09开头后面跟8位数字
NSString * MOBILE2 = @"^[0][9]$";
NSPredicate*regextestmobile2=[NSPredicate predicateWithFormat:@"SELF MATCHES %@",MOBILE2];
BOOL isMacth2=[regextestmobile2 evaluateWithObject:prenumb];
//香港
NSString *prenumb1 = [phoneNumb substringWithRange:NSMakeRange(0, 1)];
NSString * MOBILE3 = @"^([5|6|9])$";
NSPredicate*regextestmobile3=[NSPredicate predicateWithFormat:@"SELF MATCHES %@",MOBILE3];
BOOL isMacth3=[regextestmobile3 evaluateWithObject:prenumb1];
//澳门
NSString * MOBILE4 = @"^[6]([8|6])$";
NSPredicate*regextestmobile4=[NSPredicate predicateWithFormat:@"SELF MATCHES %@",MOBILE4];
BOOL isMacth4=[regextestmobile4 evaluateWithObject:prenumb];
if (isMacth1) {
//大陆
zone = @"86";
}else if (isMacth2)
{
//台湾
zone = @"886";
}else if (isMacth3){
//香港
zone = @"852";
}else if (isMacth4){
//澳门
zone = @"853";
}
return zone;
}
+(NSString *)dataControlGetUserIdInfo
{
UserModel*model=[[DataCenter defaultDtacenter]valueForKey:@"UserLogIn"];
NSString *userId =[NSString stringWithFormat:@"%@",model.userId];
return userId;
}
+(UserModel*)getUserInfo
{
UserModel*model=[[DataCenter defaultDtacenter]valueForKey:@"UserLogIn"];
return model;
}
//修改
+(void)resetUser:(UserModel *)model
{
[[DataCenter defaultDtacenter] setValue:model forKey:@"UserLogIn"];
}
+(NSArray *)getallCameras{
NSArray*cameraArr =[[DataCenter defaultDtacenter]valueForKey:@"cameraArr"];
return cameraArr;
}
+(void)saveCameraArr:(NSArray*)cameraArr{
if (!cameraArr) {
cameraArr = [[NSArray alloc] init];
}
[[DataCenter defaultDtacenter] setValue:cameraArr forKey:@"cameraArr"];
}
+(NSArray *)getallDevices
{
NSArray*deviceArr =[[DataCenter defaultDtacenter]valueForKey:@"deviceInfo"];
return deviceArr;
}
+ (UIImage *)handleImage:(UIImage *)originalImage withSize:(CGSize)size
{
CGSize originalsize = [originalImage size];
NSLog(@"改变前图片的宽度为%f,图片的高度为%f",originalsize.width,originalsize.height);
//原图长宽均小于标准长宽的,不作处理返回原图
if (originalsize.width<size.width && originalsize.height<size.height)
{
return originalImage;
}
//原图长宽均大于标准长宽的,按比例缩小至最大适应值
else if(originalsize.width>size.width && originalsize.height>size.height)
{
CGFloat rate = 1.0;
CGFloat widthRate = originalsize.width/size.width;
CGFloat heightRate = originalsize.height/size.height;
rate = widthRate>heightRate?heightRate:widthRate;
CGImageRef imageRef = nil;
if (heightRate>widthRate)
{
imageRef = CGImageCreateWithImageInRect([originalImage CGImage], CGRectMake(0, originalsize.height/2-size.height*rate/2, originalsize.width, size.height*rate));//获取图片整体部分
}
else
{
imageRef = CGImageCreateWithImageInRect([originalImage CGImage], CGRectMake(originalsize.width/2-size.width*rate/2, 0, size.width*rate, originalsize.height));//获取图片整体部分
}
UIGraphicsBeginImageContext(size);//指定要绘画图片的大小
CGContextRef con = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(con, 0.0, size.height);
CGContextScaleCTM(con, 1.0, -1.0);
CGContextDrawImage(con, CGRectMake(0, 0, size.width, size.height), imageRef);
UIImage *standardImage = UIGraphicsGetImageFromCurrentImageContext();
NSLog(@"改变后图片的宽度为%f,图片的高度为%f",[standardImage size].width,[standardImage size].height);
UIGraphicsEndImageContext();
CGImageRelease(imageRef);
return standardImage;
}
//原图长宽有一项大于标准长宽的,对大于标准的那一项进行裁剪,另一项保持不变
else if(originalsize.height>size.height || originalsize.width>size.width)
{
CGImageRef imageRef = nil;
if(originalsize.height>size.height)
{
imageRef = CGImageCreateWithImageInRect([originalImage CGImage], CGRectMake(0, originalsize.height/2-size.height/2, originalsize.width, size.height));//获取图片整体部分
}
else if (originalsize.width>size.width)
{
imageRef = CGImageCreateWithImageInRect([originalImage CGImage], CGRectMake(originalsize.width/2-size.width/2, 0, size.width, originalsize.height));//获取图片整体部分
}
UIGraphicsBeginImageContext(size);//指定要绘画图片的大小
CGContextRef con = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(con, 0.0, size.height);
CGContextScaleCTM(con, 1.0, -1.0);
CGContextDrawImage(con, CGRectMake(0, 0, size.width, size.height), imageRef);
UIImage *standardImage = UIGraphicsGetImageFromCurrentImageContext();
NSLog(@"改变后图片的宽度为%f,图片的高度为%f",[standardImage size].width,[standardImage size].height);
UIGraphicsEndImageContext();
CGImageRelease(imageRef);
return standardImage;
}
//原图为标准长宽的,不做处理
else
{
return originalImage;
}
}
+(IfishUserAsset*)getAllIfishUserAsset{
IfishUserAsset*model=[[DataCenter defaultDtacenter]valueForKey:@"IfishUserAsset"];
return model;
}
+(void)resetUserAsset:(IfishUserAsset *)model
{
[[DataCenter defaultDtacenter] setValue:model forKey:@"IfishUserAsset"];
}
+(NSDate*)formatDateTime:(NSString *)timerstr
{
NSString *string = timerstr;
NSTimeInterval second = string.longLongValue / 1000.0;
NSDate *date = [NSDate dateWithTimeIntervalSince1970:second];
return date;
}
//判断是否包含特殊字符串 即非数字字母下划线
+(BOOL)isIncludeSpecialCharact:(NSString *)str {
NSString *regex =@"(^[a-zA-Z0-9_\u4e00-\u9fa5]+$)";
NSPredicate * pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
BOOL isRight = [pred evaluateWithObject:str];
return isRight;
}
@end