为了便于日常开发效率,因此创建了一些小的工具类便于使用.
具体 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. Hibernate课堂笔记

    1.java持久化概述 Java持久化简称(JPA), 即把程序中的临时数据持久保存到数据库中.由于jdbc开发效率低,我们就提出了对象关系映射(ORM)的概率 2.ORM 通过java持久化提供的A ...

  2. 理解JavaScript作用域

    这是一篇译文,这里贴上译文地址:http://www.zcfy.cc/article/understanding-scope-in-javascript-8213-scotch-4075.html 这 ...

  3. rest-framework框架——认证、权限、频率组件

    一.rest-framework登录验证 1.models.py添加User和Token模型 class User(models.Model): name = models.CharField(max ...

  4. 【Android】9.0活动的生命周期(二)——实际代码演示

    1.0  新建一个项目ActivityLifeCycleTest. 新建两个活动NormalActivity和DialogActivity,勾选“Generate Layout File”. 文件目录 ...

  5. 转载《学习HTML5 canvas遇到的问题》

    学习HTML5 canvas遇到的问题 1. 非零环绕原则(nonzZero rule) 非零环绕原则是canvas在进行填充的时候是否要进行填充的判断依据. 在判断填充的区域拉一条线出来,拉到图形的 ...

  6. JavaScript递归深度问题

    递归是有限的东西: function fact(num) { if (num <= 1) { return 1; } else { return fact(num - 1); } } 测试结果是 ...

  7. February 26 2017 Week 9 Sunday

    There is only one happiness in life, to love and be loved. 生命中只有一种幸福,爱与被爱. Some one told me that hea ...

  8. Android Studio常用快捷键、Android Studio快捷键大全

    Android Studio 是谷歌基于IntelliJ IDEA开发的安卓开发工具,有点类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调 ...

  9. [转]Ubuntu 小企鹅输入法fcitx 支持 五笔拼音

    之前在Ubuntu下使用ibus五笔输入法,用了一段时间发现五笔输入法不能输入词组,并且五笔不支持拼音的功能,从网上找到可以使用fcitx替换掉ibus,因此自已尝试了一把,安装步骤如下: 1. 安装 ...

  10. 从零开始Vue项目实战(一)-准备篇

    从前参与过一个react项目的代码编写,大神搭建的框架,我主要负责业务逻辑代码编写,现在回想起来似乎又什么都不会,现在为了巩固前端知识,决定用Vue来做这个项目的移动端网站,我本人Vue是从零开始的, ...