私はrestkitとiOSが初めてです。xcode 4.2 と RestKit 0.2 を使用しています。私が作成したいくつかの REST Web サービスと通信する iPhone アプリを開発していますが、現在問題に直面しています。私の Web サービスのいくつかは、複数回呼び出すことを意図しています。最初のリクエストは問題なく実行されますが、再度呼び出しを行うと、次のエラーが発生します。
「NSInternalInconsistencyException」、理由:「既存の要求記述子と同じオブジェクト クラスの要求記述子を追加できません。」
このエラーの意味は理解できますが、再利用できる呼び出しを実装する方法が見つかりません。私はそれを間違っていると感じています。以下は、Web サービスを呼び出すために使用している関数の 1 つです。
- (void) restAddPlayer:(addPlayer*)add block:(void (^)(id))block{
// Load the object model via RestKit
RKObjectManager *objectManager = [RKObjectManager sharedManager];
RKObjectMapping *categoryRequestMapping = [RKObjectMapping requestMapping];
[categoryRequestMapping addAttributeMappingsFromDictionary:@{@"gName": @"groupName",@"pass":@"pass"}];
RKObjectMapping *reqMapping = [RKObjectMapping requestMapping];
[reqMapping addAttributeMappingsFromDictionary:@{@"plName": @"playerName"}];
[reqMapping addRelationshipMappingWithSourceKeyPath:@"groupInfo" mapping:categoryRequestMapping];
RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:reqMapping objectClass:[addPlayer class] rootKeyPath:nil];
[objectManager addRequestDescriptor:requestDescriptor];
objectManager.requestSerializationMIMEType = RKMIMETypeJSON;
[objectManager postObject:add path:@"addPlayer"parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSArray* statuses = [mappingResult array];
//NSLog(@"Loaded statuses: %@", statuses);
// _result = [statuses objectAtIndex:0];
block(statuses);
}
failure:^(RKObjectRequestOperation *operation, NSError *error){
NSLog(@"Hit error: %@", error);
block(nil);
}
];
}
リクエスト記述子を追加していることはわかっていますが、関数を再度呼び出すと、別の記述子を追加しようとしているため、エラーが発生します。私が知りたいのは、これを処理する方法です。これにより、投稿されているオブジェクトのさまざまな情報を使用して Web サービスを複数回呼び出すことができます。
事前にすべてに感謝します。
よろしく