1

RestKitを使用してJSONをコアデータエンティティにマッピングしようとしています。

属性を持つCaseエンティティと、というエンティティとcaseIdのオプションの1対多の関係がありBinderますbinders。エンティティには、呼び出されるとのBinder逆の1対1の関係があり、これはオプションではありません。Casecase

エンティティを正常にマッピングできますが、Caseエンティティのマッピングに問題がありBinderます。

私のマッピングは次のように設定されています。

RKEntityMapping *caseEntityMapping = [RKEntityMapping mappingForEntityForName:@"Case" inManagedObjectStore:managedObjectStore];
[caseEntityMapping addAttributeMappingsFromArray:[@"caseId"]];

RKEntityMapping *binderEntityMapping = [RKEntityMapping mappingForEntityForName:@"Binder" inManagedObjectStore:managedObjectStore];


NSString *pathPattern = @"rest/case/list";

[router.routeSet addRoute:[RKRoute routeWithName:@"getCases" pathPattern:pathPattern method:RKRequestMethodGET]];

RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:caseEntityMapping pathPattern:pathPattern keyPath:@"data" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

[_objectManager addResponseDescriptor:responseDescriptor];


pathPattern = @"rest/binder/list/:caseId";

[router.routeSet addRoute:[RKRoute routeWithRelationshipName:@"binders" objectClass:[PFCase class] pathPattern:pathPattern method:RKRequestMethodGET]];

RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:binderEntityMapping pathPattern:pathPattern keyPath:@"data" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

[_objectManager addResponseDescriptor:responseDescriptor];

を使用してケースを取得し[_objectManager getObjectsAtPathForRouteNamed:@"getCases" object:nil parameters:nil success:… failure:…]、successブロック内で、を使用して作成されたリクエスト操作を実行することにより、各ケースのバインダーを取得し[_objectManager requestWithPathForRelationship:@"binders" ofObject:mappedCase method:RKRequestMethodGET parameters:nil]ます。

ただし、バインダーのマッピング結果はありません。私は何かが足りないのですか?

4

1 に答える 1

0

外部キーRKConnectionDescriptionをバインダーエンティティマッピングに追加する必要がありました。これには、というBinderエンティティの新しい属性を作成する必要がありましたcaseId

新しい属性を作成せずにこれを行う方法はありますか?また、RKConnectionDescriptionのキーパスは何ですか/いつ必要になりますか?

于 2013-03-03T17:54:31.883 に答える