1

我需要在从 json 文件解析数据时检查是否会有 NSArray 或 NSDictionary 模型,因为服务器端存在错误。如果有 Array 我需要忽略这个模型。

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

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

我使用 jsnomodel.com

这是行不通的

谢谢

4

1 回答 1

0

您正确地将“局”定义为Optional,但这不是Optional的工作方式。定义为 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 结构等。但它应该推动你正确方向

如果它可以帮助您解决问题,请接受答案

于 2014-08-31T16:04:42.370 回答