JSON,Obj C,安全和空检查

时间:2015-09-22 03:35:17

标签: ios json

我正在开发一个应用程序,它可以从Web服务中检索密集的多层业务对象。我在Obj C中创建了正确表示和映射Webservice对象的类(即:用户对象,post对象,组对象)

现在我将数据作为json返回,对于某些数据点,响应返回,数据的某些部分为null,或者对象的某些部分不存在(就像没有姓氏的用户对象) )。我自然会开始检查是否

 JSONRESPONSE 

具有firstname,lastname,然后是city等的值。

显然这里存在很多冗余,我不想一遍又一遍地写相同的检查,但想到我在实用程序类中的类方法。

有人对此有什么想法吗?最好的做法是什么?

感谢。

2 个答案:

答案 0 :(得分:0)

处理它的一种方法是让你的类使用NSKeyValueCoding,然后设置一些验证方法,它采用一些数据结构(例如属性名称数组)并检查所需的属性,默认值等。其余的都是对你来说,如果你想做一些日志记录,设置默认值等等。数据结构实际上取决于你需要多少验证。

答案 1 :(得分:0)

您可以将此方法用于NSStringNSArrayNSDictionaryNSDataUIImage

- (BOOL)isObjectEmpty:(id)object {
        if ([object isKindOfClass:[NSNull class]] || object == nil) {
            return YES;
        }
        if ([object isKindOfClass:[NSString class]]) {
            if (object == nil || ([object respondsToSelector:@selector(length)] && [(NSString *)object length] == 0)) {
                return YES;
            }
        }
        else if ([object isKindOfClass:[NSArray class]]) {
            if (object == nil || ([object respondsToSelector:@selector(count)] && [(NSArray *)object count] == 0)) {
                return YES;
            }
        }
        else if ([object isKindOfClass:[NSDictionary class]]) {
            if (object == nil || ([object respondsToSelector:@selector(count)] && [(NSDictionary *)object count] == 0)) {
                return YES;
            }
        }
        else if ([object isKindOfClass:[NSData class]]) {
            if (object == nil || ([object respondsToSelector:@selector(length)] && [(NSData *)object length] == 0)) {
                return YES;
            }
        }
        else if ([object isKindOfClass:[UIImage class]]) {
            if (object == nil) {
                return YES;
            }
        }
        return NO;
    }