美文网首页
iOS-JSON空值处理

iOS-JSON空值处理

作者: 梵虚 | 来源:发表于2021-09-25 15:31 被阅读0次

    服务端返回的数据经常会有空值,如果没有处理好的话,会出现闪退的情况,可以写一个NSDictionary的扩展对空值进行处理,防止闪退

    //
    //  NSDictionary+MyDictionary.m
    //  yunbaolive
    //
    //  Created by apple on 2021/9/24.
    //  Copyright © 2021 cat. All rights reserved.
    //
    
    #import "NSDictionary+MyDictionary.h"
    
    @implementation NSDictionary (MyDictionary)
    
    
    - (NSDictionary *)deleteAllNullValue{
        NSMutableDictionary *mutableDic = [[NSMutableDictionary alloc] init];
        for (id keyStr in self.allKeys) {
            if ([[self objectForKey:keyStr] isKindOfClass:[NSDictionary class]]) {
                NSMutableDictionary *dicSub = [[NSMutableDictionary alloc] initWithDictionary:[self objectForKey:keyStr]];
                for (NSString *sub in dicSub.allKeys) {
                    if ([[dicSub objectForKey:sub] isKindOfClass:[NSDictionary class]]) {
                        NSMutableDictionary *dicSubTwo = [[NSMutableDictionary alloc] initWithDictionary:[dicSub objectForKey:sub]];
                        for (NSString *sub in dicSubTwo.allKeys) {
                            if ([[dicSubTwo objectForKey:sub] isEqual:[NSNull null]]) {
                                [dicSubTwo setObject:@"" forKey:sub];
                            }
                        }
                        [dicSub setObject:dicSubTwo forKey:sub];
                    }
                    if ([[dicSub objectForKey:sub] isEqual:[NSNull null]]) {
                        [dicSub setObject:@"" forKey:sub];
                    }
                }
                [mutableDic setObject:dicSub forKey:keyStr];
            }else if([[self objectForKey:keyStr] isKindOfClass:[NSArray class]]){
                NSMutableArray *aryDub = [[NSMutableArray alloc] initWithArray:[self objectForKey:keyStr]];
                for (int i=0; i < aryDub.count; i++) {
                    NSMutableDictionary *dicSub = [[NSMutableDictionary alloc] initWithDictionary:aryDub[i]];
                    [aryDub replaceObjectAtIndex:i withObject:[dicSub deleteAllNullValue]];
                }
                [mutableDic setObject:aryDub forKey:keyStr];
            }else{
                if ([[self objectForKey:keyStr] isEqual:[NSNull null]]) {
                    [mutableDic setObject:@"" forKey:keyStr];
                }
                else{
                    [mutableDic setObject:[self objectForKey:keyStr] forKey:keyStr];
                }
            }
    
        }
        return mutableDic;
    }
     
    
    @end
    
     
    

    相关文章

      网友评论

          本文标题:iOS-JSON空值处理

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