BaseResponse.m 5.3 KB
//
//  BaseResponse.m
//  IM_ios_client
//
//  Created by 赵世强 on 16/1/4.
//  Copyright © 2016年 xiniu. All rights reserved.
//

#import "BaseResponse.h"

@implementation BaseResponse

@synthesize fields;
@synthesize errors;

static NSString * const  f_errors = @"errors";
static NSString * const  f_code = @"code";
static NSString * const  f_message = @"message";
static NSString * const  f_type = @"type";
static NSString * const  f_solution = @"solution";
static NSString * const  f_totalCount = @"totalCount";

- (instancetype)init
{
    self = [super init];
    if (self) {
        fields = [[NSMutableDictionary alloc]init];
        errors = [[NSArray alloc]init];
    }
    return self;
}

// 解析json生成数据字典
-(BaseResponse *)analyzeJson:(NSString *)responseString
{
    if (responseString) {
        //fields = [responseString objectFromJSONString];
        fields = [self f_jsonDataToDic:[responseString dataUsingEncoding:NSUTF8StringEncoding]  option:NSJSONReadingMutableContainers];
    }
    /*
     NSLog(@"%@",[fields class]);
     
     NSLog(@"%lu",(unsigned long)fields.count);
     
     NSArray *arr = [fields allKeys];
     
     for (int i = 0; i < arr.count; i++) {
     //NSLog(@"%@",[[dic objectForKey:[arr objectAtIndex:i]] class]);
     
     if ([[fields objectForKey:[arr objectAtIndex:i]] isKindOfClass:[NSArray class]])
     {
     NSLog(@"array");
     }
     else if([[fields objectForKey:[arr objectAtIndex:i]] isKindOfClass:[NSDictionary class]])
     {
     NSLog(@"dictionary");
     
     
     NSDictionary *dictemp = [fields objectForKey:[arr objectAtIndex:i]];
     
     
     NSArray *arrtemp = [dictemp allKeys];
     
     for (int j = 0; j < arrtemp.count; j++) {
     
     //NSLog(@"user中成员%@类型:%@",[arrtemp objectAtIndex:j],[[dictemp objectForKey:[arrtemp objectAtIndex:j]] class]);
     NSLog(@"user中成员%@值:%@",[arrtemp objectAtIndex:j],[dictemp objectForKey:[arrtemp objectAtIndex:j]]);
     }
     
     }else{
     NSLog(@"key/value");
     }
     }
     
     //userDomain = [UserDomain new];
     
     //[userDomain initWithDic:dic];
     
     //NSLog(@"%@",userDomain.account);
     */
    return self;
}

#pragma getter/setter
-(NSArray *)errors
{
    return (NSArray *)[fields objectForKey:f_errors];
}

-(void)setErrors:(NSArray *)errors
{
    
}

-(NSString *)code
{
    NSArray *arr = (NSArray *)[fields objectForKey:f_errors];
    if (arr.count > 0) {
        NSDictionary *dic = [arr objectAtIndex:0];
        return [dic objectForKey:f_code];
    }else{
        return [fields objectForKey:f_code];
    }
}

-(void)setCode:(NSString *)code
{
    
}

-(NSString *)message
{
    NSArray *arr = (NSArray *)[fields objectForKey:f_errors];
    if (arr.count > 0) {
        NSDictionary *dic = [arr objectAtIndex:0];
        return [dic objectForKey:f_message];
    }else{
        return [fields objectForKey:f_message];
    }
}

-(void)setMessage:(NSString *)message
{
    
}

-(NSString *)solution
{
    return [fields objectForKey:f_solution];
}

-(void)setSolution:(NSString *)solution
{
    
}

-(NSString *)type
{
    NSArray *arr = (NSArray *)[fields objectForKey:f_errors];
    if (arr.count > 0) {
        NSDictionary *dic = [arr objectAtIndex:0];
        return [dic objectForKey:f_type];
    }else{
        return [fields objectForKey:f_type];
    }
}

-(void)setType:(NSString *)type
{
    
}

-(long)totalCount
{
    return [[fields objectForKey:f_totalCount] integerValue];
}

-(void)setTotalCount:(long)totalCount
{
    
}

#pragma mark - 共同的设置Domain元素的方法
/*
 itemObj:元素值
 itemKey:元素的值在元素所属Domain的字典中对应的Key
 selfFields:元素所属Domain的字典
 selfKey:元素所属Domain的字典在WKBaseDomain中的Key
 */
-(void)setItemObj:(id)itemObj itemKey:(id<NSCopying>)itemKey selfFields:(NSMutableDictionary *)selfFields selfKey:(id<NSCopying>)selfKey
{
    [selfFields setObject:itemObj forKey:itemKey];
    
    [fields setObject:selfFields forKey:selfKey];
}

#pragma mark - 根据Domain的字典在WKBaseDomain中的Key获得Domain的字典
-(NSMutableDictionary *)getDomainDicByKey:(NSString *)domainKey
{
    NSMutableDictionary *dic_self = [[NSMutableDictionary alloc]init];
    if ([fields objectForKey:domainKey]) {
        dic_self = [NSMutableDictionary dictionaryWithDictionary:[fields objectForKey:domainKey]];
    }
    return dic_self;
}

#pragma mark - 判读字典中是否存在某个key
-(BOOL)keyExistInDictionary:(NSMutableDictionary *)dic key:(NSString *)key
{
    if (![dic isKindOfClass:[NSNull class]] && dic.allKeys.count > 0 && [[dic allKeys] containsObject:key]) {
        return YES;
    }
    return NO;
}

#pragma mark jsonString转为NSMutableDictionary(NSJSONSerialization解析)
/**
 *  @author qianjun
 *
 *  @brief  jsonString转为NSMutableDictionary(NSJSONSerialization解析)
 *
 *  @param theData dic/array
 *
 *  @return jsonString
 */
- (NSMutableDictionary *)f_jsonDataToDic:(NSData*)jsonData option:(NSJSONReadingOptions)option
{
    NSError* error;
    if(jsonData)
    {
        NSMutableDictionary *muDic_json = [NSJSONSerialization
                                           JSONObjectWithData:jsonData
                                           options:option error:&error];
        
        if(muDic_json && muDic_json.count > 0)
        {
            return muDic_json;
        }
    }
    return nil;
}


@end