私のアプリでは、次のようなことをします:
[itineraryMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"inboundInfo" toKeyPath:@"inboundInfo" withMapping:flightInfoMapping]];
しかし、いくつかの基準に従ってキーinboundInfo
が返される場合と返されない場合があります。このケースを満たすためJSON
にまったく新しい(大きな)応答記述子をに追加したくありませんが、キーパスobjectManager
が存在することを確認する方法はありますかinboundInfo
プロパティ マッピングを追加する前かどうか。
inboundInfo
上記の行で返されなかった場合の ps はJSON
クラッシュし、行を削除してもアプリは問題ありません。
編集:次のように使用して解決しRKDynamicMapping
ました:
//configuring the dynamic mapping
[dynamicMapping setObjectMappingForRepresentationBlock:^RKEntityMapping *(id representation) {
if([[representation objectForKey:@"inboundInfo"] isKindOfClass:[NSDictionary class]]) {
if(![itineraryMapping.propertyMappings containsObject:inboundInfoMapping]) { //to prevent adding inboundInfoMapping more than once
[itineraryMapping addPropertyMapping:inboundInfoMapping];
}
}
//if inboundInfo is not a dictionary simply return the itineraryMapping without adding inboundInfoMapping on it
return itineraryMapping;
}];