0

同じ toKeyPath (destinationKeyPath) を持つ複数の RKRelationshipMappings を使用すると問題が発生します。1 つの RKRelationshipMapping を 1 つの toKeyPath に使用することに成功しましたが、同じ toKeyPath を持つ 2 つ目の RKRelationshipMappings をアタッチできません。

動作する RKRelationshipMapping を 1 つ含むコード:

RKObjectMapping *someObjectRequestMapping = [RKObjectMapping requestMapping];
[someObjectRequestMapping addAttributeMappingsFromDictionary:@{@"prop1" : @"prop_1", @"prop2" : @"prop_2"}]; 

RKObjectMapping *firstSubObjectMapping = [RKObjectMapping requestMapping];
[firstSubObjectMapping addAttributeMappingsFromDictionary:@{@"subProp1" : @"sub_prop1", @"subProp2" : @"sub_prop2"}];

[someObjectRequestMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"prop3"
                                                                                         toKeyPath:@"prop_3"
                                                                                       withMapping:firstSubObjectMapping];

ただし、別の RKRelationshipMapping を「someObjectRequestMapping」に同じ toKeyPath (「prop_3」) で追加したい場合、RestKit はエラーで失敗します。

*'NSInternalInconsistencyException'、理由:'keyPathのinconsistency_attributesのマッピングを追加できません。すでに存在します...'*

失敗する 2 つの RKRelationshipMappings を含むコード:

RKObjectMapping *someObjectRequestMapping = [RKObjectMapping requestMapping];
[someObjectRequestMapping addAttributeMappingsFromDictionary:@{@"prop1" : @"prop_1", @"prop2" : @"prop_2"}]; 

RKObjectMapping *firstSubObjectMapping = [RKObjectMapping requestMapping];
[firstSubObjectMapping addAttributeMappingsFromDictionary:@{@"subProp1" : @"sub_prop1", @"subProp2" : @"sub_prop2"}];

RKObjectMapping *secondSubObjectMapping = [RKObjectMapping requestMapping];
[secondSubObjectMapping addAttributeMappingsFromDictionary:@{@"subProp2" : @"sub_prop2", @"subProp3" : @"sub_prop3"}];

[someObjectRequestMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"prop3"
                                                                                         toKeyPath:@"prop_3"
                                                                                       withMapping:firstSubObjectMapping];

[someObjectRequestMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"prop4"
                                                                                         toKeyPath:@"prop_3"
                                                                                       withMapping:secondSubObjectMapping];

マッピングは RKRequestDescriptor で使用されます。

どんな助けでも大歓迎です。

よろしくお願いします、

ダミール

4

1 に答える 1

0

エラーは非常に明確です。RestKit はあいまいさを許容しないため、キー パスごとに 1 つのマッピングしか持てません。

通常、これが応答記述子の場合は、動的マッピングを使用して、どの関係マッピングが適切かを判断します。リクエスト記述子の場合、送信するオブジェクトを分析し、どのマッピングが適切かを判断する場合に、自分で同様のことを行うことができます。これは、2 つの異なるマッピングがあり、手動で選択することを意味します。RKObjectManagerこれは、それぞれ異なるマッピング セットで設定された複数の を使用して行うこともできます。

于 2013-09-11T14:35:45.743 に答える