美文网首页iOS
工具类(过滤接口空值, value 或 空字符串) - iOS

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

作者: survivorsfyh | 来源:发表于2018-09-13 16:50 被阅读56次

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

        本文链接:https://www.haomeiwen.com/subject/dexggftx.html