我是restkit和iOS的新手。我正在使用 xcode 4.2 和 RestKit 0.2。我一直在开发一个 iPhone 应用程序,它与我创建的一些 REST Web 服务进行通信,现在我遇到了一个问题。我的一些网络服务被多次调用。第一个请求运行没有问题,但是当我再次尝试拨打电话时,我收到此错误:
'NSInternalInconsistencyException',原因:'无法为与现有请求描述符相同的对象类添加请求描述符。
我确实了解此错误的含义,但尚未找到实现可重用调用的方法。我有一种感觉,我做错了。以下是我用来调用 Web 服务的函数之一:
- (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 服务。
提前感谢大家。
问候