Restkit + Objective-c – 多次调用同一个Web服务

我是restkit和iOS的新手。 我正在使用xcode 4.2和RestKit 0.2。 我一直在开发一个iPhone应用程序,它与我创build的一些REST Web服务进行通信,现在我正面临一个问题。 我的一些networking服务打算多次打电话。 第一个请求运行没有问题,但是当我再次尝试拨打电话时,出现此错误:

'NSInternalInconsistencyException',原因:'不能为现有的请求描述符添加同一个对象类的请求描述符。

我明白这个错误意味着什么,但还没有find一种方法来实现可重用的调用。 我有一种感觉,我做错了。 以下是我用来调用Web服务的function之一:

- (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服务,以不同的信息在对象后。

感谢所有提前。

问候

除了“postObject”调用之外,这个例程中的所有东西都可能在别的地方,比如应用程序启动时的应用程序委托。

您正在设置映射,关系和请求描述符。 您不需要为每个呼叫指定它们。 只要将它们设置一次,然后当你准备好时,只需调用“postObject”。 同样的情况也适用于你的serializationType – 除非有一些REST端点返回XML,而另一些端点返回JSON,你可能会设置一次,而忘记它。