1

サーバー側のバグのため、NSArray または NSDictionary モデルがあるかどうか、json ファイルからのデータの解析中に確認する必要があります。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 に答える