1

私のアプリでは、次のようなことをします:

[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;

}];
4

1 に答える 1

2

を使用RKDynamicMappingして、応答を分析し、適用するマッピングを決定するコード ブロックを実行できます。

http://restkit.org/api/latest/Classes/RKDynamicMapping.html

(動的オブジェクト マッピング セクション) https://github.com/RestKit/RestKit/wiki/Object-mapping

于 2013-06-30T07:28:27.133 に答える