iOS JSONModel检查类

时间:2014-08-31 13:41:37

标签: ios jsonmodel

我需要在解析来自json文件的数据时检查是否存在NSArray或NSDictionary模型,因为服务器端有bug。如果有数组,我需要忽略这个模型。

@property (strong, nonatomic) NSDictionary <Optional,RCTruckInningsModel> *innings;

+(BOOL)propertyIsOptional:(NSString*)propertyName
{
return YES;
}

我使用jsnomodel.com

这不起作用

由于

1 个答案:

答案 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结构等等,但它应该把你推向正确的方向

如果能帮助您解决问题,请接受答案