美文网首页
iOS中的数组越界

iOS中的数组越界

作者: 专心致志的程序员 | 来源:发表于2019-06-02 11:57 被阅读0次

    我们在开发过程中可能会遇到一些数组越界的问题,当我们遇到这样的问题的时候我们可以为NSArrayNSMutableArray以及NSDictionary写一个分类,我们新建一个NSArray的分类,暂且叫做NSArray+Extend当然里面还包含了NSMutableArrayNSDictionary,这样我们在.h文件中写上一些方法,这里面包含了NSArrayNSMutableArray以及NSDictionary

    @interface NSArray (Extend)
    - (NSString *)stringForCheckedKey:(id)key;
    - (id)objectAtCheckedIndex:(int)index;
    - (NSString *)stringAtCheckedIndex:(int)index;
    @end
    
    @interface NSMutableArray (Extend)
    - (void)addCheckedObject:(id)object;
    @end
    @interface NSDictionary (Extend)
    - (id)objectForCheckedKey:(id)key;
    - (NSString *)stringForCheckedKey:(id)key;
    @end
    

    接下来我们只要在.m文件中去实现以下就好了

    #import "NSArray+Extend.h"
    @implementation NSArray (Extend)
    - (id)objectForCheckedKey:(id)key
    {
        return nil;
    }
    - (NSString *)stringForCheckedKey:(id)key
    {
        return @"";
    }
    //检查index是否超过总大小
    - (id)objectAtCheckedIndex:(int)index
    {
        if ([self count] <= index) {
    //        DLog(@"NSArray数据超过容量");
            return nil;
        }
        else if (index <= -1) {
    //        DLog(@"index 错误");
            return nil;
        }
        else
        {
            return [self objectAtIndex:index];
        }
    }
    - (NSString *)stringAtCheckedIndex:(int)index
    {
        if ([self count] <= index) {
            //        DLog(@"NSArray数据超过容量");
            return @"";
        }
        else if (index <= -1) {
            //        DLog(@"index 错误");
            return @"";
        }
        else
        {
            return (NSString *)[self objectAtIndex:index];
        }
    }
    @end
    @implementation NSMutableArray (Extend)
    - (id)objectForCheckedKey:(id)key
    {
        return nil;
    }
    - (void)addCheckedObject:(id)object
    {
        if (object != nil) {
            [self addObject:object];
        }
        else
        {
            DLog(@"");
        }
    }
    
    @end
    
    @implementation NSDictionary (Extend)
    - (id)objectForCheckedKey:(id)key
    {
        id object_ = [self objectForKey:key];
        
        if ([object_ isKindOfClass:[NSNull class] ]) {
            return nil;
        }
        
        return object_;
    }
    - (NSString *)stringForCheckedKey:(id)key
    {    
        id object_ = [self objectForKey:key];
        
        if ([object_ isKindOfClass:[NSString class] ]) {
            
            return object_;
        }
        
        if([object_ isKindOfClass:[NSNumber class] ]) {
            
            return [object_ stringValue];
        }
        else if ([object_ isKindOfClass:[NSString class] ]) {
            
            return @"";
        }
        else
        {
            return @"";
        }
    }
    
    
    @end
    

    做完这些我们就能使用了
    具体使用方法如下:
    1、从网络请求中取我们想要的值:

    [[responseObject objectForCheckedKey:@"error"]stringForCheckedKey:@"message"];
    

    使用方法大同小异,大家可以尝试使用一下!!!!

    相关文章

      网友评论

          本文标题:iOS中的数组越界

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