为了便于日常开发效率,因此创建了一些小的工具类便于使用.
具体 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. Java简单验证码原理(源代码+步骤操作)

    本文章一共分为五个步骤,具体操作流程如下: 一.新建名为:CheckCodeServlet的servlet类; 二.复制以下代码到新建的CheckCodeServlet类中,修改自己的包名: pack ...

  2. <转>MapReduce工作原理图文详解

    转自 http://weixiaolu.iteye.com/blog/1474172前言:  前段时间我们云计算团队一起学习了hadoop相关的知识,大家都积极地做了.学了很多东西,收获颇丰.可是开学 ...

  3. Python contextlib.contextmanager

    看着代码又发现了一个奇怪的东西: @contextlib.contextmanager def __call__(self, incoming): result_wrapper = [] yield ...

  4. Linux 套接字编程 - select

    select 可以感知文件表述符集合中的变化,如果办fd0(即标准输入)放入select的read fd set,发现只有按回车的时候select才会返回.查了下要把终端的缓冲大小设为1,这样就能实现 ...

  5. JavaScirpt(JS)——js介绍及ECMAScript

    一.JavaScript历史发展 JavaScript语言的历史:http://javascript.ruanyifeng.com/introduction/history.html 1994年12月 ...

  6. ECMAScript 6简介

    一.起步 1.扎实的HTML/CSS/Javascript基本功,这是前置条件. 2.不要用任何的构建项目工具,只用最简单的<script>,把教程里的例子模仿一遍,理解用法.不推荐上来就 ...

  7. 【路一直都在】----img标签垂直居中问题

    先上代码 .dianshang ul li a { height: 100px; vertical-align:middle; display: table-cell;        width: 1 ...

  8. Web服务器父与子 Apache和Tomcat

    Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一.在Apache基金会里面Apache S ...

  9. Spring MVC开发初体验

    1.目标实现Spring MVC : Hello World! 2.工程创建步骤 new : Dynamic Web Project lib引入Spring框架libs/*.jar touch web ...

  10. 【Leetcode】【Easy】Min Stack

    Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. pu ...