为了便于日常开发效率,因此创建了一些小的工具类便于使用.
具体 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 获取当前时间距离当天凌晨的秒数

    原文出自:https://blog.csdn.net/seesun2012 在前期项目中遇到一个客户端与服务器间的时间同步问题,需要获取到当前时间与当天凌晨时间距离的秒数,写这篇文章主要是为了总结一下 ...

  2. Javascript怎么跳出循环,嵌套循环。

    今天要实现一个功能,在数组a中的每一项,对应数组b中的每一项,如果对应上了就给数组b的checked增加ture属性,如果查找不到就给数组b的checked增加false属性. 如果有哪里写的不对欢迎 ...

  3. Windows的任务管理器怎么显示进程的图标

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:Windows的任务管理器怎么显示进程的图标.

  4. common-jdbc:一个基于SpringJdbcTemplate的高性能数据库操作工具类库

    项目地址:https://gitee.com/cnsugar/common-jdbc 一.简介 基于SpringJdbcTemplate的高性能数据库操作工具类库,支持mysql.oracle数据库, ...

  5. Java集合篇六:Map中key值不可重复的测试

    package com.test.collection; import java.util.HashMap; import java.util.Map; //Map中key值不可重复的测试 publi ...

  6. 支持触屏的zepto轮播图插件

    占个座,有时间再写,呵呵 关于zepto.js,官方标准版是不支持touch的.可以去github下载压缩包,里面有所有支持的模块.我用的zepto.js,是经过打包的,包括polyfill zept ...

  7. JDBC实现动态查询

    一 概述 1.什么是动态查询? 从多个查询条件中随机选择若干个组合成一个DQL语句进行查询,这一过程叫做动态查询. 2.动态查询的难点 可供选择的查询条件多,组合情况多,难以一一列举. 3.最终查询语 ...

  8. MonkeyRunnermac

    http://blog.csdn.net/wyb199026/article/details/51436754 背景 之前想学习自动化测试的时候,就研究过MonkeyRunner,说实话MonkeyR ...

  9. winform中 让 程序 自己重启

    private void button1_Click(object sender, EventArgs e)        {            Application.ExitThread(); ...

  10. 操作系统页面置换算法之FIFO,LRU

    #include<iostream> #include<unistd.h> #include<vector> #include<wait.h> #inc ...