我正在开发一个应用程序,它可以从Web服务中检索密集的多层业务对象。我在Obj C中创建了正确表示和映射Webservice对象的类(即:用户对象,post对象,组对象)
现在我将数据作为json返回,对于某些数据点,响应返回,数据的某些部分为null,或者对象的某些部分不存在(就像没有姓氏的用户对象) )。我自然会开始检查是否
JSONRESPONSE
具有firstname,lastname,然后是city等的值。
显然这里存在很多冗余,我不想一遍又一遍地写相同的检查,但想到我在实用程序类中的类方法。
有人对此有什么想法吗?最好的做法是什么?
感谢。
答案 0 :(得分:0)
处理它的一种方法是让你的类使用NSKeyValueCoding,然后设置一些验证方法,它采用一些数据结构(例如属性名称数组)并检查所需的属性,默认值等。其余的都是对你来说,如果你想做一些日志记录,设置默认值等等。数据结构实际上取决于你需要多少验证。
答案 1 :(得分:0)
您可以将此方法用于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;
}