私のアプリでは、次のようなことをします:
[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;
}];