为了便于日常开发效率,因此创建了一些小的工具类便于使用.
具体 code 如下:
声明:

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h> @interface YHIsEmptySafeValue : NSObject /**
过滤 value 中空值
[NSString stringWithFormat:@"%@", SafeValue([dicCommand objectForKey:@"command"])] @param value 需要判断过滤的 value 值
@return 处理后的结果
*/
extern NSString *SafeValue(id value); /**
将接口返回数据中的空值默认转为字符串
@param dataObj 数据源
@return 结果集
*/
extern id changeType(id dataObj); @end

  

实现:

#import "YHIsEmptySafeValue.h"

@implementation YHIsEmptySafeValue

#pragma mark - 过滤 value 中空值
/**
过滤 value 中空值 @param value 需要判断过滤的 value 值
@return 处理后的结果
*/
NSString *SafeValue(id value) {
if (!value) {
return @"";
}
else if ([value isKindOfClass:[NSString class]]) {
if ([value isEqualToString:@"<null>"] || [value isEqualToString:@"null"] || [value isEqualToString:@"(null)"] || [value isEqualToString:@"nil"]) {
return @"";
}
else {
return value;
} }
else {
return [NSString stringWithFormat:@"%@", value];
}
} #pragma makr - 将接口返回数据中的空值默认转为字符串
/**
将接口返回数据中的空值默认转为字符串 @param dataObj 数据源
@return 结果集
*/
id changeType(id dataObj) {
if ([dataObj isKindOfClass:[NSDictionary class]]) {
return nullDic(dataObj);
}
else if ([dataObj isKindOfClass:[NSArray class]]) {
return nullArr(dataObj);
}
else if ([dataObj isKindOfClass:[NSString class]]) {
return stringToString(dataObj);
}
else if ([dataObj isKindOfClass:[NSNull class]]) {
return nullStr(dataObj);
}
else {
return dataObj;
}
} /**
将 NSDictionary 中的 null 类型转化为空字符串 @""
@param dic 数据源
@return 结果集
*/
NSDictionary *nullDic(NSDictionary *dic) {
NSArray *arrKey = [dic allKeys];
NSMutableDictionary *dicResult = [NSMutableDictionary dictionary];
for (NSInteger i = 0; i < arrKey.count; i++) {
id obj = [dic objectForKey:arrKey[i]];
obj = changeType(obj);
// Add
[dicResult setObject:obj forKey:arrKey[i]];
}
// Callback
return dicResult;
} /**
将 NSArray 中的 null 类型转化为空字符串 @""
@param arr 数据源
@return 结果集
*/
NSArray *nullArr(NSArray *arr) {
NSMutableArray *arrResult = [NSMutableArray array];
for (NSInteger i = 0; i < arr.count; i++) {
id obj = arr[i];
obj = changeType(obj);
// Add
[arrResult addObject:obj];
}
// Callback
return arrResult;
} /**
将 NSString 中的 null 类型转化为空字符串 @""
@param str 数据源
@return 结果集
*/
NSString *nullStr(NSString *str) {
return @"";
} /**
将 NSString 类型直接返回 @param str 数据源
@return 结果集
*/
NSString *stringToString(NSString *str) {
return str;
} @end

  

以上便是此次分享的内容,期待大神多多指点补充,使其更加强壮!

工具类(过滤接口空值, value 或 空字符串) - iOS的更多相关文章

  1. SpringMVC 常用工具类与接口

    ClassPathResource 在类路径下读取资源 public final String getPath()public boolean exists()public InputStream g ...

  2. 我的Java开发学习之旅------>工具类:Java使用正则表达式分离出字符串中的中文和英文

    今天看到一个工具类使用正则表达式将一大段字符串中的中文和英文都分离出来了,在此记录一下,读者可以收藏! import java.util.ArrayList; import java.util.Col ...

  3. Java之工具类:判断对象是否为空或null

    import java.lang.reflect.Array; import java.util.Collection; import java.util.Map; /** * 判断对象是否为空或nu ...

  4. 断言工具类之"判断条件不为空"

    1 Assert.notNull(query, AssertConstants.NOT_NULL_MSG);

  5. Java工具类_随机生成任意长度的字符串【密码、验证码】

    import java.util.Random; public class PasswordCreate { /** * 获得密码 * @param len 密码长度 * @return */ pub ...

  6. Java使用OkHttps工具类调用外部接口

    前言 现在公司业务已止不是传统的增删改查等简单的业务处理操作,而是对数据各种联调三方接口与其他系统进行交互等,那么就需要我们在后台java中进行外部接口的调用,本文采用OkHttps工具类对接微信接口 ...

  7. Spark项目之电商用户行为分析大数据平台之(十)IDEA项目搭建及工具类介绍

    一.创建Maven项目 创建项目,名称为LogAnalysis 二.常用工具类 2.1 配置管理组建 ConfigurationManager.java import java.io.InputStr ...

  8. java - day005 - 数组工具类, 数组复制,二维数组,变量,方法, 面向对象

    1. java.util.Arrays  数组工具类    Arrays.toString (数组) 数组值链接字符串 Arrays.sort(数组) 基本类型: 优化的快速排序 引用类型: 优化的合 ...

  9. StringUtils工具类的使用

    注意isNotEmpty()和isNotBlank()的区别 过去的字符串判空:if("".equals(str) || str == null).现在使用工具类StringUti ...

随机推荐

  1. 项目管理系统 TAIGA 部署

    题记 使用了 MantisBT 一段时间,觉得功能太少,只局限在错误跟踪,而且操作体验比较差,界面很糟糕,很早就想将其换掉. 偶然发现一个很不错的新选择:Taiga,于是就试着将其部署下来,发现绝对是 ...

  2. WinSock 重叠IO模型

    title: WinSock 重叠IO模型 tags: [WinSock 模型, 网络编程, 重叠IO模型] date: 2018-06-29 20:26:13 categories: Windows ...

  3. 原生js简单实现拖拽效果

    实现弹窗拖拽效果的原理是:按下鼠标并移动——拖拽移动物体,抬起鼠标——停止移动.主要触发三个事件:onmousedown.onmousemove以及onmouseup: 首先搭建结构:一个宽350px ...

  4. Steps of source code change to executable application

    程序运行的整个过程,学习一下 源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 汇编程序 (assembler) → 目标代码 (o ...

  5. css 字体样式设置大全

    css样式大全(整理版)   字体属性:(font) 大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX.PD 样式 { ...

  6. linux搭建nginx图片服务器

    1:参考http://blog.csdn.net/u012401711/article/details/53525908

  7. 新发布 | 微软开源之路最新进展:FreeBSD落地由世纪互联营运的Microsoft Azure

    微软和开源,是近几年业界孜孜不倦的讨论话题,微软也在开源之路越走越宽.最近与 FreeBSD 基金更紧密的合作踏出了微软在开源之路上的又一大步. 自2012年开始,微软在 FreeBSD 与其虚拟化平 ...

  8. Cloud Foundry和微服务Meetup重磅来袭

    CF 同学们: Cloud Foundry 2016 上海 Meetup 将在10月22日在上海港汇广场进行! 想要参会的小伙伴,请直戳  ~ 在过去的一年,CF 的技术有很多进展,微服务也是2016 ...

  9. Java应用程序

    示例: public class HelloWorld { public static void main(String[] args) { System.out.println("Hell ...

  10. WAKE-WIN10-SOFT-MATio

    1,matio Matio is an open-source C library for reading and writing binary MATLAB MAT files. This libr ...