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