iOS常用公共方法
1. 获取磁盘总空间大小
2. 获取磁盘可用空间大小
3. 获取指定路径下某个文件的大小
4. 获取文件夹下所有文件的大小
5. 获取字符串(或汉字)首字母
6. 将字符串数组按照元素首字母顺序进行排序分组
输出结果
7. 获取当前时间
8. 计算上次日期距离现在多久, 如 xx 小时前、xx 分钟前等
输出结果
9. 判断手机号码格式是否正确
10. 判断邮箱格式是否正确
11. 将十六进制颜色转换为 UIColor 对象
12. 对图片进行滤镜处理
13. 对图片进行模糊处理
14. 调整图片饱和度、亮度、对比度
15. 创建一张实时模糊效果 View (毛玻璃效果)
16. 全屏截图
17. 截取一张 view 生成图片
18. 截取view中某个区域生成一张图片
19. 压缩图片到指定尺寸大小
20. 压缩图片到指定文件大小
21. 获取设备 IP 地址
22. 判断字符串中是否含有空格
23. 判断字符串中是否含有某个字符串
24. 判断字符串中是否含有中文
25. 判断字符串是否全部为数字
26. 绘制虚线
1. 获取磁盘总空间大小
[Objective-C]
查看源文件
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
//磁盘总空间
+ (CGFloat)diskOfAllSizeMBytes{
CGFloat size = 0.0;
NSError
*error;
NSDictionary
*dic = [[
NSFileManager
defaultManager] attributesOfFileSystemForPath:
NSHomeDirectory
() error:&error];
if
(error) {
#ifdef DEBUG
NSLog
(
@"error: %@"
, error.localizedDescription);
#endif
}
else
{
NSNumber
*number = [dic objectForKey:
NSFileSystemSize
];
size = [number floatValue]/1024/1024;
}
return
size;
}
|
2. 获取磁盘可用空间大小
[Objective-C]
查看源文件
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
//磁盘可用空间
+ (CGFloat)diskOfFreeSizeMBytes{
CGFloat size = 0.0;
NSError
*error;
NSDictionary
*dic = [[
NSFileManager
defaultManager] attributesOfFileSystemForPath:
NSHomeDirectory
() error:&error];
if
(error) {
#ifdef DEBUG
NSLog
(
@"error: %@"
, error.localizedDescription);
#endif
}
else
{
NSNumber
*number = [dic objectForKey:
NSFileSystemFreeSize
];
size = [number floatValue]/1024/1024;
}
return
size;
}
|
3. 获取指定路径下某个文件的大小
[Objective-C]
查看源文件
复制代码
1
2
3
4
5
6
|
//获取文件大小
+ (
long
long
)fileSizeAtPath:(
NSString
*)filePath{
NSFileManager
*fileManager = [
NSFileManager
defaultManager];
if
(![fileManager fileExistsAtPath:filePath])
return
0;
return
[[fileManager attributesOfItemAtPath:filePath error:
nil
] fileSize];
}
|
4. 获取文件夹下所有文件的大小
[Objective-C]
查看源文件
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
|
//获取文件夹下所有文件的大小
+ (
long
long
)folderSizeAtPath:(
NSString
*)folderPath{
NSFileManager
*fileManager = [
NSFileManager
defaultManager];
if
(![fileManager fileExistsAtPath:folderPath])
return
0;
NSEnumerator
*filesEnumerator = [[fileManager subpathsAtPath:folderPath] objectEnumerator];
NSString
*fileName;
long
long
folerSize = 0;
while
((fileName = [filesEnumerator nextObject]) !=
nil
) {
NSString
*filePath = [folderPath stringByAppendingPathComponent:fileName];
folerSize += [
self
fileSizeAtPath:filePath];
}
return
folerSize;
}
|
5. 获取字符串(或汉字)首字母
[Objective-C]
查看源文件
复制代码
1
2
3
4
5
6
7
8
|
//获取字符串(或汉字)首字母
+ (
NSString
*)firstCharacterWithString:(
NSString
*)string{
NSMutableString
*str = [
NSMutableString
stringWithString:string];
CFStringTransform((CFMutableStringRef)str,
NULL
, kCFStringTransformMandarinLatin,
NO
);
CFStringTransform((CFMutableStringRef)str,
NULL
, kCFStringTransformStripDiacritics,
NO
);
NSString
*pingyin = [str capitalizedString];
return
[pingyin substringToIndex:1];
}
|
6. 将字符串数组按照元素首字母顺序进行排序分组
[Objective-C]
查看源文件
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
//将字符串数组按照元素首字母顺序进行排序分组
+ (
NSDictionary
*)dictionaryOrderByCharacterWithOriginalArray:(
NSArray
*)array{
if
(array.count == 0) {
return
nil
;
}
for
(
id
obj in array) {
if
(![obj isKindOfClass:[
NSString
class
]]) {
return
nil
;
}
}
UILocalizedIndexedCollation *indexedCollation = [UILocalizedIndexedCollation currentCollation];
NSMutableArray
*objects = [
NSMutableArray
arrayWithCapacity:indexedCollation.sectionTitles.count];
//创建27个分组数组
for
(
int
i = 0; i < indexedCollation.sectionTitles.count; i++) {
NSMutableArray
*obj = [
NSMutableArray
array];
[objects addObject:obj];
}
NSMutableArray
*keys = [
NSMutableArray
arrayWithCapacity:objects.count];
//按字母顺序进行分组
NSInteger
lastIndex = -1;
for
(
int
i = 0; i < array.count; i++) {
NSInteger
index = [indexedCollation sectionForObject:array[i] collationStringSelector:
@selector
(uppercaseString)];
[[objects objectAtIndex:index] addObject:array[i]];
lastIndex = index;
}
//去掉空数组
for
(
int
i = 0; i < objects.count; i++) {
NSMutableArray
*obj = objects[i];
if
(obj.count == 0) {
[objects removeObject:obj];
}
}
//获取索引字母
for
(
NSMutableArray
*obj in objects) {
NSString
*str = obj[0];
NSString
*key = [
self
firstCharacterWithString:str];
[keys addObject:key];
}
NSMutableDictionary
*dic = [
NSMutableDictionary
dictionary];
[dic setObject:objects forKey:keys];
return
dic;
}
//获取字符串(或汉字)首字母
+ (
NSString
*)firstCharacterWithString:(
NSString
*)string{
NSMutableString
*str = [
NSMutableString
stringWithString:string];
CFStringTransform((CFMutableStringRef)str,
NULL
, kCFStringTransformMandarinLatin,
NO
);
CFStringTransform((CFMutableStringRef)str,
NULL
, kCFStringTransformStripDiacritics,
NO
);
NSString
*pingyin = [str capitalizedString];
return
[pingyin substringToIndex:1];
}
|
使用如下:
[Objective-C]
查看源文件
复制代码
1
2
3
|
NSArray
*arr = @[
@"guangzhou"
,
@"shanghai"
,
@"北京"
,
@"henan"
,
@"hainan"
];
NSDictionary
*dic = [Utilities dictionaryOrderByCharacterWithOriginalArray:arr];
NSLog
(
@"\n\ndic: %@"
, dic);
|
输出结果如下:
输出结果
7. 获取当前时间
[Objective-C]
查看源文件
复制代码
1
2
3
4
5
6
7
|
//获取当前时间
//format: @"yyyy-MM-dd HH:mm:ss"、@"yyyy年MM月dd日 HH时mm分ss秒"
+ (
NSString
*)currentDateWithFormat:(
NSString
*)format{
NSDateFormatter
*dateFormatter = [[
NSDateFormatter
alloc] init];
[dateFormatter setDateFormat:format];
return
[dateFormatter stringFromDate:[
NSDate
date]];
}
|
8. 计算上次日期距离现在多久, 如 xx 小时前、xx 分钟前等
[Objective-C]
查看源文件
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
/**
* 计算上次日期距离现在多久
*
* @param lastTime 上次日期(需要和格式对应)
* @param format1 上次日期格式
* @param currentTime 最近日期(需要和格式对应)
* @param format2 最近日期格式
*
* @return xx分钟前、xx小时前、xx天前
*/
+ (
NSString
*)timeIntervalFromLastTime:(
NSString
*)lastTime
lastTimeFormat:(
NSString
*)format1
ToCurrentTime:(
NSString
*)currentTime
currentTimeFormat:(
NSString
*)format2{
//上次时间
NSDateFormatter
*dateFormatter1 = [[
NSDateFormatter
alloc]init];
dateFormatter1.dateFormat = format1;
NSDate
*lastDate = [dateFormatter1 dateFromString:lastTime];
//当前时间
NSDateFormatter
*dateFormatter2 = [[
NSDateFormatter
alloc]init];
dateFormatter2.dateFormat = format2;
NSDate
*currentDate = [dateFormatter2 dateFromString:currentTime];
return
[Utilities timeIntervalFromLastTime:lastDate ToCurrentTime:currentDate];
}
+ (
NSString
*)timeIntervalFromLastTime:(
NSDate
*)lastTime ToCurrentTime:(
NSDate
*)currentTime{
NSTimeZone
*timeZone = [
NSTimeZone
systemTimeZone];
//上次时间
NSDate
*lastDate = [lastTime dateByAddingTimeInterval:[timeZone secondsFromGMTForDate:lastTime]];
//当前时间
NSDate
*currentDate = [currentTime dateByAddingTimeInterval:[timeZone secondsFromGMTForDate:currentTime]];
//时间间隔
NSInteger
intevalTime = [currentDate timeIntervalSinceReferenceDate] - [lastDate timeIntervalSinceReferenceDate];
//秒、分、小时、天、月、年
NSInteger
minutes = intevalTime / 60;
NSInteger
hours = intevalTime / 60 / 60;
NSInteger
day = intevalTime / 60 / 60 / 24;
NSInteger
month = intevalTime / 60 / 60 / 24 / 30;
NSInteger
yers = intevalTime / 60 / 60 / 24 / 365;
if
(minutes <= 10) {
return
@"刚刚"
;
}
else
if
(minutes < 60){
return
[
NSString
stringWithFormat:
@"%ld分钟前"
,(
long
)minutes];
}
else
if
(hours < 24){
return
[
NSString
stringWithFormat:
@"%ld小时前"
,(
long
)hours];
}
else
if
(day < 30){
return
[
NSString
stringWithFormat:
@"%ld天前"
,(
long
)day];
}
else
if
(month < 12){
NSDateFormatter
* df =[[
NSDateFormatter
alloc]init];
df.dateFormat =
@"M月d日"
;
NSString
* time = [df stringFromDate:lastDate];
return
time;
}
else
if
(yers >= 1){
NSDateFormatter
* df =[[
NSDateFormatter
alloc]init];
df.dateFormat =
@"yyyy年M月d日"
;
NSString
* time = [df stringFromDate:lastDate];
return
time;
}
return
@""
;
}
|
使用如下:
[Objective-C]
查看源文件
复制代码
1
2
3
4
|
NSLog
(
@"\n\nresult: %@"
, [Utilities timeIntervalFromLastTime:
@"2015年12月8日 15:50"
lastTimeFormat:
@"yyyy年MM月dd日 HH:mm"
ToCurrentTime:
@"2015/12/08 16:12"
currentTimeFormat:
@"yyyy/MM/dd HH:mm"
]);
|
输出结果如下:
输出结果
9. 判断手机号码格式是否正确
[Objective-C]
查看源文件
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
//判断手机号码格式是否正确
+ (
BOOL
)valiMobile:(
NSString
*)mobile{
mobile = [mobile stringByReplacingOccurrencesOfString:
@" "
withString:
@""
];
if
(mobile.length != 11)
{
return
NO
;
}
else
{
/**
* 移动号段正则表达式
*/
NSString
*CM_NUM =
@"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\d{8}|(1705)\\d{7}$"
;
/**
* 联通号段正则表达式
*/
NSString
*CU_NUM =
@"^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))\\d{8}|(1709)\\d{7}$"
;
/**
* 电信号段正则表达式
*/
NSString
*CT_NUM =
@"^((133)|(153)|(177)|(18[0,1,9]))\\d{8}$"
;
NSPredicate
*pred1 = [
NSPredicate
predicateWithFormat:
@"SELF MATCHES %@"
, CM_NUM];
BOOL
isMatch1 = [pred1 evaluateWithObject:mobile];
NSPredicate
*pred2 = [
NSPredicate
predicateWithFormat:
@"SELF MATCHES %@"
, CU_NUM];
BOOL
isMatch2 = [pred2 evaluateWithObject:mobile];
NSPredicate
*pred3 = [
NSPredicate
predicateWithFormat:
@"SELF MATCHES %@"
, CT_NUM];
BOOL
isMatch3 = [pred3 evaluateWithObject:mobile];
if
(isMatch1 || isMatch2 || isMatch3) {
return
YES
;
}
else
{
return
NO
;
}
}
}
|
10. 判断邮箱格式是否正确
[Objective-C]
查看源文件
复制代码
1
2
3
4
5
6
|
//利用正则表达式验证
+ (
BOOL
)isAvailableEmail:(
NSString
*)email {
NSString
*emailRegex =
@"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"
;
NSPredicate
*emailTest = [
NSPredicate
predicateWithFormat:
@"SELF MATCHES %@"
, emailRegex];
return
[emailTest evaluateWithObject:email];
}
|
11. 将十六进制颜色转换为 UIColor 对象
[Objective-C]
查看源文件
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
//将十六进制颜色转换为 UIColor 对象
+ (UIColor *)colorWithHexString:(
NSString
*)color{
NSString
*cString = [[color stringByTrimmingCharactersInSet:[
NSCharacterSet
whitespaceAndNewlineCharacterSet]] uppercaseString];
// String should be 6 or 8 characters
if
([cString length] < 6) {
return
[UIColor clearColor];
}
// strip "0X" or "#" if it appears
if
([cString hasPrefix:
@"0X"
])
cString = [cString substringFromIndex:2];
if
([cString hasPrefix:
@"#"
])
cString = [cString substringFromIndex:1];
if
([cString length] != 6)
return
[UIColor clearColor];
// Separate into r, g, b substrings
NSRange
range;
range.location = 0;
range.length = 2;
//r
NSString
*rString = [cString substringWithRange:range];
//g
range.location = 2;
NSString
*gString = [cString substringWithRange:range];
//b
range.location = 4;
NSString
*bString = [cString substringWithRange:range];
// Scan values
unsigned
int
r, g, b;
[[
NSScanner
scannerWithString:rString] scanHexInt:&r];
[[
NSScanner
scannerWithString:gString] scanHexInt:&g];
[[
NSScanner
scannerWithString:bString] scanHexInt:&b];
return
[UIColor colorWithRed:((
float
) r / 255.0f) green:((
float
) g / 255.0f) blue:((
float
) b / 255.0f) alpha:1.0f];
}
|
12. 对图片进行滤镜处理
[Objective-C]
查看源文件
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
#pragma mark - 对图片进行滤镜处理
// 怀旧 --> CIPhotoEffectInstant 单色 --> CIPhotoEffectMono
// 黑白 --> CIPhotoEffectNoir 褪色 --> CIPhotoEffectFade
// 色调 --> CIPhotoEffectTonal 冲印 --> CIPhotoEffectProcess
// 岁月 --> CIPhotoEffectTransfer 铬黄 --> CIPhotoEffectChrome
// CILinearToSRGBToneCurve, CISRGBToneCurveToLinear, CIGaussianBlur, CIBoxBlur, CIDiscBlur, CISepiaTone, CIDepthOfField
+ (UIImage *)filterWithOriginalImage:(UIImage *)image filterName:(
NSString
*)name{
CIContext *context = [CIContext contextWithOptions:
nil
];
CIImage *inputImage = [[CIImage alloc] initWithImage:image];
CIFilter *filter = [CIFilter filterWithName:name];
[filter setValue:inputImage forKey:kCIInputImageKey];
CIImage *result = [filter valueForKey:kCIOutputImageKey];
CGImageRef cgImage = [context createCGImage:result fromRect:[result extent]];
UIImage *resultImage = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
return
resultImage;
}
|
13. 对图片进行模糊处理
[Objective-C]
查看源文件
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#pragma mark - 对图片进行模糊处理
// CIGaussianBlur ---> 高斯模糊
// CIBoxBlur ---> 均值模糊(Available in iOS 9.0 and later)
// CIDiscBlur ---> 环形卷积模糊(Available in iOS 9.0 and later)
// CIMedianFilter ---> 中值模糊, 用于消除图像噪点, 无需设置radius(Available in iOS 9.0 and later)
// CIMotionBlur ---> 运动模糊, 用于模拟相机移动拍摄时的扫尾效果(Available in iOS 9.0 and later)
+ (UIImage *)blurWithOriginalImage:(UIImage *)image blurName:(
NSString
*)name radius:(
NSInteger
)radius{
CIContext *context = [CIContext contextWithOptions:
nil
];
CIImage *inputImage = [[CIImage alloc] initWithImage:image];
CIFilter *filter;
if
(name.length != 0) {
filter = [CIFilter filterWithName:name];
[filter setValue:inputImage forKey:kCIInputImageKey];
if
(![name isEqualToString:
@"CIMedianFilter"
]) {
[filter setValue:@(radius) forKey:
@"inputRadius"
];
}
CIImage *result = [filter valueForKey:kCIOutputImageKey];
CGImageRef cgImage = [context createCGImage:result fromRect:[result extent]];
UIImage *resultImage = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
return
resultImage;
}
else
{
return
nil
;
}
}
|
14. 调整图片饱和度、亮度、对比度
[Objective-C]
查看源文件
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
/**
* 调整图片饱和度, 亮度, 对比度
*
* @param image 目标图片
* @param saturation 饱和度
* @param brightness 亮度: -1.0 ~ 1.0
* @param contrast 对比度
*
*/
+ (UIImage *)colorControlsWithOriginalImage:(UIImage *)image
saturation:(CGFloat)saturation
brightness:(CGFloat)brightness
contrast:(CGFloat)contrast{
CIContext *context = [CIContext contextWithOptions:
nil
];
CIImage *inputImage = [[CIImage alloc] initWithImage:image];
CIFilter *filter = [CIFilter filterWithName:
@"CIColorControls"
];
[filter setValue:inputImage forKey:kCIInputImageKey];
[filter setValue:@(saturation) forKey:
@"inputSaturation"
];
[filter setValue:@(brightness) forKey:
@"inputBrightness"
];
// 0.0 ~ 1.0
[filter setValue:@(contrast) forKey:
@"inputContrast"
];
CIImage *result = [filter valueForKey:kCIOutputImageKey];
CGImageRef cgImage = [context createCGImage:result fromRect:[result extent]];
UIImage *resultImage = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
return
resultImage;
}
|
15. 创建一张实时模糊效果 View (毛玻璃效果)
[Objective-C]
查看源文件
复制代码
1
2
3
4
5
6
7
|
//Avilable in iOS 8.0 and later
+ (UIVisualEffectView *)effectViewWithFrame:(CGRect)frame{
UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:effect];
effectView.frame = frame;
return
effectView;
}
|
16. 全屏截图
[Objective-C]
查看源文件
复制代码
1
2
3
4
5
6
7
8
9
|
//全屏截图
+ (UIImage *)shotScreen{
UIWindow *window = [UIApplication sharedApplication].keyWindow;
UIGraphicsBeginImageContext(window.bounds.size);
[window.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return
image;
}
|
17. 截取一张 view 生成图片
[Objective-C]
查看源文件
复制代码
1
2
3
4
5
6
7
8
|
//截取view生成一张图片
+ (UIImage *)shotWithView:(UIView *)view{
UIGraphicsBeginImageContext(view.bounds.size);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return
image;
}
|
18. 截取view中某个区域生成一张图片
[Objective-C]
查看源文件
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
//截取view中某个区域生成一张图片
+ (UIImage *)shotWithView:(UIView *)view scope:(CGRect)scope{
CGImageRef imageRef = CGImageCreateWithImageInRect([
self
shotWithView:view].CGImage, scope);
UIGraphicsBeginImageContext(scope.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect rect = CGRectMake(0, 0, scope.size.width, scope.size.height);
CGContextTranslateCTM(context, 0, rect.size.height);
//下移
CGContextScaleCTM(context, 1.0f, -1.0f);
//上翻
CGContextDrawImage(context, rect, imageRef);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRelease(imageRef);
CGContextRelease(context);
return
image;
}
|
19. 压缩图片到指定尺寸大小
[Objective-C]
查看源文件
复制代码
1
2
3
4
5
6
7
8
|
//压缩图片到指定尺寸大小
+ (UIImage *)compressOriginalImage:(UIImage *)image toSize:(CGSize)size{
UIImage *resultImage = image;
UIGraphicsBeginImageContext(size);
[resultImage drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIGraphicsEndImageContext();
return
resultImage;
}
|
20. 压缩图片到指定文件大小
[Objective-C]
查看源文件
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
//压缩图片到指定文件大小
+ (
NSData
*)compressOriginalImage:(UIImage *)image toMaxDataSizeKBytes:(CGFloat)size{
NSData
*data = UIImageJPEGRepresentation(image, 1.0);
CGFloat dataKBytes = data.length/1000.0;
CGFloat maxQuality = 0.9f;
CGFloat lastData = dataKBytes;
while
(dataKBytes > size && maxQuality > 0.01f) {
maxQuality = maxQuality - 0.01f;
data = UIImageJPEGRepresentation(image, maxQuality);
dataKBytes = data.length/1000.0;
if
(lastData == dataKBytes) {
break
;
}
else
{
lastData = dataKBytes;
}
}
return
data;
}
|
21. 获取设备 IP 地址
需要先引入下头文件:
[Objective-C]
查看源文件
复制代码
1
2
|
#import <ifaddrs.h>
#import <arpa/inet.h>
|
代码:
[Objective-C]
查看源文件
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
//获取设备 IP 地址
+ (
NSString
*)getIPAddress {
NSString
*address =
@"error"
;
struct
ifaddrs *interfaces =
NULL
;
struct
ifaddrs *temp_addr =
NULL
;
int
success = 0;
success = getifaddrs(&interfaces);
if
(success == 0) {
temp_addr = interfaces;
while
(temp_addr !=
NULL
) {
if
(temp_addr->ifa_addr->sa_family == AF_INET) {
if
([[
NSString
stringWithUTF8String:temp_addr->ifa_name] isEqualToString:
@"en0"
]) {
address = [
NSString
stringWithUTF8String:inet_ntoa(((
struct
sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];
}
}
temp_addr = temp_addr->ifa_next;
}
}
freeifaddrs(interfaces);
return
address;
}
|
22. 判断字符串中是否含有空格
[Objective-C]
查看源文件
复制代码
1
2
3
4
5
6
7
8
|
+ (
BOOL
)isHaveSpaceInString:(
NSString
*)string{
NSRange
_range = [string rangeOfString:
@" "
];
if
(_range.location !=
NSNotFound
) {
return
YES
;
}
else
{
return
NO
;
}
}
|
23. 判断字符串中是否含有某个字符串
[Objective-C]
查看源文件
复制代码
1
2
3
4
5
6
7
8
|
+ (
BOOL
)isHaveString:(
NSString
*)string1 InString:(
NSString
*)string2{
NSRange
_range = [string2 rangeOfString:string1];
if
(_range.location !=
NSNotFound
) {
return
YES
;
}
else
{
return
NO
;
}
}
|
24. 判断字符串中是否含有中文
[Objective-C]
查看源文件
复制代码
1
2
3
4
5
6
7
8
9
|
+ (
BOOL
)isHaveChineseInString:(
NSString
*)string{
for
(
NSInteger
i = 0; i < [string length]; i++){
int
a = [string characterAtIndex:i];
if
(a > 0x4e00 && a < 0x9fff) {
return
YES
;
}
}
return
NO
;
}
|
25. 判断字符串是否全部为数字
[Objective-C]
查看源文件
复制代码
01
02
03
04
05
06
07
08
09
10
|
+ (
BOOL
)isAllNum:(
NSString
*)string{
unichar c;
for
(
int
i=0; i<string.length; i++) {
c=[string characterAtIndex:i];
if
(!isdigit(c)) {
return
NO
;
}
}
return
YES
;
}
|
26. 绘制虚线
[Objective-C]
查看源文件
复制代码