Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios JSON、Obj C、安全和空检查_Ios_Json - Fatal编程技术网

Ios JSON、Obj C、安全和空检查

Ios JSON、Obj C、安全和空检查,ios,json,Ios,Json,我正在开发一个应用程序,它可以从Web服务中检索密集的多层业务对象。我在objc中创建了一些类,这些类正确地表示和映射了Webservice对象(即:user对象、post对象、group对象) 现在,我以json的形式获取数据,对于某些数据点,响应返回时,数据的某些部分为null,或者对象的某些部分不在那里(比如没有姓氏的用户对象)。当然,我会开始检查 JSONRESPONSE 对firstname、lastname、city等具有值 显然这里面有很多冗余,我不知道;我不想一次又一次地写

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

现在,我以json的形式获取数据,对于某些数据点,响应返回时,数据的某些部分为null,或者对象的某些部分不在那里(比如没有姓氏的用户对象)。当然,我会开始检查

 JSONRESPONSE 
对firstname、lastname、city等具有值

显然这里面有很多冗余,我不知道;我不想一次又一次地写同样的检查,但是在我拥有的实用程序类中考虑一个类方法

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


谢谢。

处理这个问题的一种方法是让您的类使用NSKeyValueCoding,然后设置一些采用某些数据结构(例如属性名称数组)的验证方法,并检查所需的属性、默认值等。其余的由您决定,如果您想做一些日志记录,请设置默认值,等等。数据结构实际上取决于您需要多少验证。

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

您可以尝试添加类别,为您执行
null
&
nil
检查。为了避免由于
nil
插入而导致崩溃,您可以返回空字符串。例如,下面是
NSDictionary
上的一个类别,它有助于检索非nil/null字符串

- (id)nullSafeObjectForKey:(NSString *) iKey {
    id retrievedValue = [self objectForKey:iKey];

    return ([retrievedValue isKindOfClass:[NSNull class]] || retrievedValue == nil) ? @"" : retrievedValue;
}

您可以尝试添加类别,这些类别为您执行
null
nil
检查。为了避免由于
nil
插入而导致崩溃,您可以返回空字符串。例如,下面是
NSDictionary
上的一个类别,它有助于检索非nil/null字符串

- (id)nullSafeObjectForKey:(NSString *) iKey {
    id retrievedValue = [self objectForKey:iKey];

    return ([retrievedValue isKindOfClass:[NSNull class]] || retrievedValue == nil) ? @"" : retrievedValue;
}

您可以将此方法用于
NSString
NSArray
NSDictionary
NSData
UIImage

- (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;
    }

您可以将此方法用于
NSString
NSArray
NSDictionary
NSData
UIImage

- (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;
    }

如何解析这个JSON?解析的文档对象模型中如何表示
null
?如何解析此JSON?解析文档对象模型中如何表示
null