You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
402 lines
7.9 KiB
402 lines
7.9 KiB
// |
|
// JL_Tools.h |
|
// JL_BLEKit |
|
// |
|
// Created by zhihui liang on 2018/11/9. |
|
// Copyright © 2018 www.zh-jieli.com. All rights reserved. |
|
// |
|
|
|
#import <Foundation/Foundation.h> |
|
|
|
NS_ASSUME_NONNULL_BEGIN |
|
typedef void(^JL_Action)(void); |
|
typedef void(^JL_Timer_BK)(void); |
|
|
|
@class JL_Timer; |
|
@interface JL_Tools : NSObject |
|
/** |
|
Data自定义截取。 |
|
|
|
@param data 数据 |
|
@param index 偏移 |
|
@param length 长度 |
|
@return 截取后的数据 |
|
*/ |
|
+(NSData*)data:(NSData*)data R:(NSInteger)index L:(NSInteger)length; |
|
+(NSDictionary*)dictionaryData:(NSData*)data R:(NSInteger)index L:(NSInteger)length; |
|
|
|
/** |
|
NSData 转成 10进制 |
|
|
|
@param data 数据类型 |
|
@return NSInteger类型 |
|
*/ |
|
+(NSInteger)dataToInt:(NSData*)data; |
|
|
|
/** |
|
NSData 转成 NSString |
|
|
|
@param data 数据 |
|
@return 字符串 |
|
*/ |
|
+(NSString*)dataChangeToString:(NSData*)data; |
|
|
|
/** |
|
uint8_t 转成 NSData |
|
|
|
@param value uint8_t类型 |
|
@return NSData |
|
*/ |
|
+(NSData*)uInt8_data:(uint8_t)value; |
|
|
|
/** |
|
uint16_t 转成 NSData |
|
|
|
@param value uint16_t类型 |
|
@param endian YES:小端 NO:大端 |
|
@return NSData |
|
*/ |
|
+(NSData*)uInt16_data:(uint16_t)value Endian:(BOOL)endian; |
|
|
|
/** |
|
uint32_t 转成 NSData |
|
|
|
@param value uint32_t类型 |
|
@param endian YES:小端 NO:大端 |
|
@return NSData |
|
*/ |
|
+(NSData*)uInt32_data:(uint32_t)value Endian:(BOOL)endian; |
|
|
|
/** |
|
uint64_t 转成 NSData |
|
|
|
@param value uint64_t类型 |
|
@param endian YES:小端 NO:大端 |
|
@return NSData |
|
*/ |
|
+(NSData*)uInt64_data:(uint64_t)value Endian:(BOOL)endian; |
|
|
|
/** |
|
int64_t 转成 NSData |
|
|
|
@param value int64_t类型 |
|
@param endian YES:小端 NO:大端 |
|
@return NSData |
|
*/ |
|
+(NSData*)int64_data:(int64_t)value Endian:(BOOL)endian; |
|
|
|
/** |
|
大小端转换 |
|
|
|
@param data 数据 |
|
@return 转换后的数据 |
|
*/ |
|
+(NSData*)changeBigOrSmall:(NSData*)data; |
|
|
|
/** |
|
@"ffff0000" 转成 <ffff 0000>,16进制的字符串变成NSData。 |
|
|
|
@param hex 类似@"ffff0000" |
|
@return NSData类型 => <ffff 0000> |
|
*/ |
|
+(NSMutableData*)HexToData:(NSString*)hex; |
|
/** |
|
* 去除结束符 |
|
*/ |
|
+(NSData*)cleanEOF:(NSData*)data; |
|
/** |
|
求自然数:aByte ==> -2 -1 0 1 2 3... |
|
@param aByte 数据 |
|
@return 自然数 |
|
*/ |
|
+(int)getNaturalNumber:(NSData*)aByte; |
|
+(int)getNaturalNumber_u16:(NSData*)u16Bytes; |
|
+(int)getNaturalNumber_u32:(NSData*)u32Bytes; |
|
|
|
/** |
|
发出通知事件 |
|
|
|
@param name 通知名字 |
|
@param object 传递的对象 |
|
*/ |
|
+(void)post:(NSString*)name Object:(id __nullable)object; |
|
|
|
/** |
|
发出通知事件 |
|
|
|
@param name 通知名字 |
|
@param object 传递的对象 |
|
@param info 传递的信息 |
|
*/ |
|
+(void)post:(NSString*)name Object:(id __nullable)object UserInfo:(NSDictionary* __nullable)info; |
|
/** |
|
监听通知事件 |
|
|
|
@param name 通知名字 |
|
@param action 实现方法 |
|
@param own 监听者 |
|
*/ |
|
+(void)add:(NSString*__nullable)name Action:(SEL)action Own:(id)own; |
|
|
|
/** |
|
取消通知监听 |
|
|
|
@param name 通知名字 |
|
@param own 监听者 |
|
*/ |
|
+(void)remove:(NSString*__nullable)name Own:(id)own; |
|
|
|
/** |
|
往NSUserDefault存入对象(注意:可变类型对象不适用)。 |
|
|
|
@param objc 对象 |
|
@param key 键值 |
|
*/ |
|
+(void)setUser:(id)objc forKey:(NSString*)key; |
|
|
|
/** |
|
从NSUserDefault取出对象(注意:可变类型对象不适用)。 |
|
|
|
@param key 键值 |
|
@return 返回对象 |
|
*/ |
|
+(id)getUserByKey:(NSString*)key; |
|
|
|
/** |
|
移除NSUserDefault相对应的对象 |
|
|
|
@param key 键值 |
|
*/ |
|
+(void)removeUserByKey:(NSString*)key; |
|
|
|
|
|
/** |
|
延时执行block。 |
|
|
|
@param sec 延时时间(秒) |
|
@param block 代码块 |
|
*/ |
|
+(void)delay:(double)sec Task:(JL_Action)block; |
|
|
|
/** |
|
异步执行block。 |
|
|
|
@param block 代码块 |
|
*/ |
|
+(void)subTask:(JL_Action)block; |
|
|
|
/** |
|
主线程执行block。 |
|
|
|
@param block 代码块 |
|
*/ |
|
+(void)mainTask:(JL_Action)block; |
|
|
|
|
|
/** |
|
新建定时器 |
|
|
|
@param sel 执行方法 |
|
@param objc 执行对象 |
|
@param sec 间隔时间(秒) |
|
@return NSTimer |
|
*/ |
|
+(NSTimer*)timingStart:(SEL)sel target:(id)objc Time:(NSTimeInterval)sec; |
|
|
|
|
|
/** |
|
暂停定时间器 |
|
|
|
@param timer 定时器指针 |
|
*/ |
|
+(void)timingPause:(__weak NSTimer*)timer; |
|
|
|
/** |
|
继续定时器 |
|
|
|
@param timer 定时器指针 |
|
*/ |
|
+(void)timingContinue:(__weak NSTimer*)timer; |
|
|
|
|
|
/** |
|
摧毁定时器 |
|
|
|
@param timer 定时器指针 |
|
*/ |
|
+(void)timingStop:(__weak NSTimer*)timer; |
|
|
|
|
|
/** |
|
在存在的文件路径上,建立新的文件。 |
|
|
|
@param sPath 沙盒 |
|
@param mPath 中间路径 |
|
@param file 文件名 |
|
@return 完成路径 |
|
*/ |
|
+(NSString*)createOn:(NSSearchPathDirectory)sPath |
|
MiddlePath:(NSString*)mPath |
|
File:(NSString*)file; |
|
|
|
/** |
|
列出文件路径 |
|
|
|
@param sPath 沙盒 |
|
@param mPath 中间路径 |
|
@param file 文件名 |
|
@return 完整路径 |
|
*/ |
|
+(NSString*)listPath:(NSSearchPathDirectory)sPath |
|
MiddlePath:(NSString*)mPath |
|
File:(NSString*)file; |
|
|
|
/** |
|
* 用途:【查找】一个文件,在你想要的路径下。 |
|
* @param sPath 系统路径 |
|
* @param mPath 中途路径 -->> @"test1/test2/test3" <<-- |
|
* @param file 文件名 |
|
*/ |
|
+(NSString*)findPath:(NSSearchPathDirectory)sPath |
|
MiddlePath:(NSString*)mPath |
|
File:(NSString*)file; |
|
|
|
/** |
|
* 用途:从Project资源里寻找文件。 |
|
* (先把资源文件添加至工程内的Copy Bundle Resources内。) |
|
* @param file 文件名 |
|
* @return 该文件的路径。 |
|
*/ |
|
+(NSString*)find:(NSString *)file; |
|
|
|
/** |
|
* 是否存在某个路径。 |
|
* @param path 文件路径 |
|
* @return YES or NO。 |
|
*/ |
|
+(BOOL)isExistsPath:(NSString*)path; |
|
/** |
|
删除文件 |
|
@param path 完整路径 |
|
@return 成功与否 |
|
*/ |
|
+(BOOL)removePath:(NSString*)path; |
|
|
|
/** |
|
* 用途:文件夹内文件元素。 |
|
* @param path 文件夹路径 |
|
*/ |
|
+(NSArray*)subPaths:(NSString*)path; |
|
|
|
/** |
|
* 用途:解析JSON文件。 |
|
* @param path 文件路径 |
|
*/ |
|
+(id)JsonPath:(NSString*)path; |
|
|
|
/** |
|
* NSArray ==> NSString. |
|
*/ |
|
+(NSString*)arrayToJson:(NSArray *)array; |
|
|
|
/** |
|
数据覆盖写进文件 |
|
|
|
@param data 数据 |
|
@param path 文件路径 |
|
@return 成功与否 |
|
*/ |
|
+(BOOL)writeData:(NSData*)data fillFile:(NSString*)path; |
|
|
|
/** |
|
数据写进文件的末端 |
|
|
|
@param data 数据 |
|
@param path 文件路径 |
|
*/ |
|
+(void)writeData:(NSData*)data endFile:(NSString*)path; |
|
|
|
/** |
|
数据写进文件的偏移位置 |
|
|
|
@param data 数据 |
|
@param seek 偏移 |
|
@param path 文件路径 |
|
*/ |
|
+(void)writeData:(NSData*)data Seek:(unsigned long long)seek File:(NSString*)path; |
|
|
|
/** |
|
* UNICODE 编码字符串(小端) |
|
*/ |
|
+(NSString*)stringUnicode:(NSData*)data; |
|
|
|
/** |
|
* UNICODE 编码字符串(大端) |
|
*/ |
|
+(NSString*)stringUnicodeBig:(NSData*)data; |
|
|
|
/** |
|
* ANSI 编码字符串 |
|
*/ |
|
+(NSString*)stringANSI:(NSData*)data; |
|
|
|
/** |
|
* GBK 编码字符串 |
|
*/ |
|
+(NSString*)stringGBK:(NSData*)data; |
|
|
|
/** |
|
* 大文件传输,长短文件名(移除不必要字符) |
|
*/ |
|
+(NSData*)stringBigFileWithNeedRemoveUnnecessaryPunctuationCharactersWithString:(NSString*)name withFileNameIndex:(int)fileNameIndex; |
|
|
|
/// 大文件传输文件名设置 |
|
/// Unicode编码 |
|
/// - Parameters: |
|
/// - name: 文件名 |
|
/// - fileNameIndex: index |
|
/// - encodeType: 编码格式 |
|
+(NSData *)stringBigFileUnicode:(NSString *)name withFileNameIndex:(int)fileNameIndex WithEncode:(NSStringEncoding) encodeType; |
|
|
|
/** |
|
* 移除不必要字符 \ / : " < > . space |
|
*/ |
|
+(NSString *)removeUnnecessaryPunctuationCharactersWithString:(NSString *)textString; |
|
|
|
/** |
|
* 大文件传输,长短文件名 |
|
*/ |
|
+(NSData*)stringBigFile:(NSString*)name withFileNameIndex:(int)fileNameIndex; |
|
|
|
/** |
|
* 去除特殊字符串 |
|
*/ |
|
+(NSString*)removeSpecialStrings:(NSString*)name; |
|
/** |
|
* 返回时间戳(单位:秒) |
|
*/ |
|
+(long)dateCurrent; |
|
|
|
|
|
/// 把data变成LTV格式 |
|
/// @param type 类型 |
|
/// @param data 数据 |
|
+(NSData *)beLtv:(uint8_t)type Data:(NSData*)data; |
|
|
|
/** |
|
* 开启打印 |
|
*/ |
|
+(void)openLogTextFile; |
|
|
|
@end |
|
|
|
@interface JL_Timer : NSObject |
|
@property(nonatomic,assign)NSInteger subTimeout; //超时时间(默认5s) |
|
@property(nonatomic,assign)NSTimeInterval subScale; //默认1.0s |
|
-(void)waitForTimeoutResult:(JL_Timer_BK)result; |
|
-(void)cancelTimeout; |
|
-(void)threadWait; |
|
-(void)threadContinue; |
|
@end |
|
|
|
NS_ASSUME_NONNULL_END
|
|
|