我需要在解析来自json文件的数据时检查是否存在NSArray或NSDictionary模型,因为服务器端有bug。如果有数组,我需要忽略这个模型。
@property (strong, nonatomic) NSDictionary <Optional,RCTruckInningsModel> *innings;
+(BOOL)propertyIsOptional:(NSString*)propertyName
{
return YES;
}
我使用jsnomodel.com
这不起作用
由于
答案 0 :(得分:0)
你正确地定义了&#34;局和#34;如可选,但这不是可选的工作原理。定义为Optional的属性可以是指定类型或 nil 。
您手上的情况非常不稳定,需要特殊的解决方案。我可以做到以下几点:
1)定义一个被忽略的属性(即JSONModel在导入JSON时不处理它)
@property (strong, nonatomic) NSDictionary<Ignore>* innings;
2)然后通过覆盖initWithDictionary自行导入属性值(如果你使用initWithDictionary):
-(id)initWithDictionary:(NSDictionary*)dict error:(NSError**)err
{
self = [super initWithDictionary:dict error:err];
if (self) {
if ([dict[@"innings"] isKindOfClass:[NSDictionary class]]) {
NSDictionary* d = dict[@"innings"];
NSMutableDictionary* md = [@{} mutableCopy];
for (NSString* key in d.allKeys) {
RCTruckInningsModel* model = [[RCTruckInningsModel alloc] initWithDictionary: d[key]];
if (model) {
md[key] = model;
}
}
self.innings = [md copy];
}
}
return self;
}
我没有真正尝试过Xcode中的代码,但这就是我认为通用解决方案应该是什么 - 您需要自己尝试并完成自己的JSON结构等等,但它应该把你推向正确的方向
如果能帮助您解决问题,请接受答案