美文网首页iOS Developer
处理服务器返回数据,减少crash

处理服务器返回数据,减少crash

作者: 7d3fadbb4407 | 来源:发表于2017-10-26 14:58 被阅读216次

NSDictionary添加分类,实现以下方法。

1.返回NSString

- (NSString *)jsonString:(NSString *)key
{
    id object = [self objectForKey:key];
    if ([object isKindOfClass:[NSString class]])
    {
        return object;
    }
    else if([object isKindOfClass:[NSNumber class]])
    {
        return [object stringValue];
    }
    return @"";
}

2.返回NSDictionary

- (NSDictionary *)jsonDict:(NSString *)key
{
    id object = [self objectForKey:key];
    return [object isKindOfClass:[NSDictionary class]] ? object : [NSDictionary dictionary];
}

3.返回NSArray

- (NSArray *)jsonArray:(NSString *)key
{
    id object = [self objectForKey:key];
    return [object isKindOfClass:[NSArray class]] ? object : [NSArray array];
}

4.返回NSArray,并且元素全部为NSString

- (NSArray *)jsonStringArray:(NSString *)key
{
    NSArray *array = [self jsonArray:key];
    BOOL invalid = NO;
    for (id item in array)
    {
        if (![item isKindOfClass:[NSString class]])
        {
            invalid = YES;
        }
    }
    return invalid ? [NSArray array] : array;
}

5.返回BOOL

- (BOOL)jsonBool:(NSString *)key
{
    id object = [self objectForKey:key];
    if ([object isKindOfClass:[NSString class]] ||
        [object isKindOfClass:[NSNumber class]])
    {
        return [object boolValue];
    }
    return NO;
}

6.返回NSInteger

- (NSInteger)jsonInteger:(NSString *)key
{
    id object = [self objectForKey:key];
    if ([object isKindOfClass:[NSString class]] ||
        [object isKindOfClass:[NSNumber class]])
    {
        return [object integerValue];
    }
    return 0;
}

7.返回long long

- (long long)jsonLongLong:(NSString *)key
{
    id object = [self objectForKey:key];
    if ([object isKindOfClass:[NSString class]] ||
        [object isKindOfClass:[NSNumber class]])
    {
        return [object longLongValue];
    }
    return 0;
}

8.返回unsigned long long

- (unsigned long long)jsonUnsignedLongLong:(NSString *)key
{
    id object = [self objectForKey:key];
    if ([object isKindOfClass:[NSString class]] ||
        [object isKindOfClass:[NSNumber class]])
    {
        return [object unsignedLongLongValue];
    }
    return 0;
}

9.返回double

- (double)jsonDouble:(NSString *)key{
    id object = [self objectForKey:key];
    if ([object isKindOfClass:[NSString class]] ||
        [object isKindOfClass:[NSNumber class]])
    {
        return [object doubleValue];
    }
    return 0;
}

相关文章

网友评论

    本文标题:处理服务器返回数据,减少crash

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