工具类(过滤接口空值, value 或 空字符串) - iOS

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

  

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

原文地址:https://www.cnblogs.com/survivorsfyh/p/9641616.html

时间: 2024-10-10 17:48:41

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

微信工具类(常用接口)的整理

1 /** 2 * 根据微信用户的AppId和AppSecret获取access token 3 * @param wxAppId 微信用户的AppId 4 * @param wxAppSecret 微信用户的AppSecret 5 * @return 微信服务器的access token 6 */ 7 public static String getAccessToken(String wxAppId, String wxAppSecret) { 8 String retStr = "&quo

java常用的工具类

一.数组作为常用的数据结构,jdk在Arrays工具类中提供了很多有用的算法,并且根据不同的基本数据类型都有相应的重载,这里只列举名称. 接口 功能 说明 asList 将数组转换为List binarySearch 二分查找 入参必须有序,可以找到返回值>=0,否则返回小于0的值,不一定是-1 copyOf 从源数组进行复制 会截断或者扩充 copyOfRange 从源数据进行范围复制 deepEquals 多维数组的等值判断 deepHashCode 多维数组的哈希值 deepToStrin

Java随机字符串:随机数字字符串,工具类

Java中生成随机数,字符串的工具类 1. 调用方法需要传入生成字符串的长度和需要的类型 生成随机数字 生成随机字母字符串 生成随机字符串+数字等 ......... 2. 总共8种类型,具体看工具类中的注释. 1 import java.util.Date; 2 import java.util.Random; 3 import java.util.UUID; 4 5 /** 6 * @Name RandomStringUtil 7 * @Descr 生成随机字符串 8 * @author d

Java中将字符串与unicode的相互转换工具类

unicode编码规则 unicode码对每一个字符用4位16进制数表示.具体规则是:将一个字符(char)的高8位与低8位分别取出,转化为16进制数,如果转化的16进制数的长度不足2位,则在其后补0,然后将高.低8位转成的16进制字符串拼接起来并在前面补上"\u" 即可. 版权声明:本文为博主原创文章,未经博主允许不得转载. 原文地址:https://www.cnblogs.com/poterliu/p/9579918.html 联系邮箱:[email protected] 联系微信

字符串工具类(指定字符串的长度和判断是否为空等方法)

package com.sec.util; /** * 字符串工具类 * @author Administrator * */public class StringUtil { /** * 过滤<,>,\n 字符串的方法 * @param input * @return */ public static String filterHTML(String input){ if(input == null || input.length() == 0){ return input; } input

day07(Set接口,HashSet类,hashcoad(),Collections工具类,Map集合)

Set接口 set接口的实现类特点 1.无序(取出来的顺序和存进去的数据的顺序不一致) 2.唯一(数据不能存相同的) 底层是用Map集合写的 HashSet类  实现了  set接口       唯一性  public class HashSetTest { public static void main(String[] args) { HashSet<String> hs=new HashSet<String>(); hs.add("hello"); hs.

JDK1.8新特性——Collector接口和Collectors工具类

JDK1.8新特性——Collector接口和Collectors工具类 摘要:本文主要学习了在Java1.8中新增的Collector接口和Collectors工具类,以及使用它们在处理集合时的改进和优化. 部分内容来自以下博客: https://www.jianshu.com/p/7eaa0969b424 流式处理 JDK1.8中新增的流式处理提供了一种高效且易于使用的处理数据的方式,它可以对集合执行非常复杂的查找.过滤和映射数据等操作,极大的简化了对于集合的使用.借助流式处理,可以像使用S

mybatis的基本配置:实体类、配置文件、映射文件、工具类 、mapper接口

搭建项目 一:lib(关于框架的jar包和数据库驱动的jar包) 1,第一步:先把mybatis的核心类库放进lib里 2,第二步:导入第三方类库(在lib里).mybatis的核心类库在运行时还依赖一些第三方类库 3,第三步:导入连接数据库驱动jar包 二:创建mybatis的配置文件 1,第一步:先创建实体包,对照着表结构把实体类写出来.封装好就是写get,set方法------不像hibernate,可以自动的将表名字段名与实体类相对应,不用自己手写实体类与映射文件 2,第二步:创建xml

利用StringUtils工具类进行String为空的判断

  利用工具类进行String类型数据的非空判断,让自己的项目代码变得更加的简洁明了. 判断某字符串是否为空,为空的标准是 str==null 或 str.length()==0 下面是 StringUtils 判断是否为空的示例: StringUtils.isEmpty(null) = true StringUtils.isEmpty("") = true StringUtils.isEmpty(" ") = false //注意在 StringUtils 中空格