2013-03-18 70 views
0

我是restkit和iOS的新手。我使用xcode 4.2和RestKit 0.2。我一直在開發一個iPhone應用程序,與我創建的一些REST Web服務進行通信,現在我面臨一個問題。 我的一些網絡服務打算多次打電話。第一個請求沒有問題,運行,但是當我嘗試再次撥打電話,我得到這個錯誤:Restkit + Objective-c - 對同一個Web服務的多個調用

'NSInternalInconsistencyException', reason: 'Cannot add a request descriptor for the same object class as an existing request descriptor.'

我明白這個錯誤是什麼意思但還沒有找到一種方法來實現通話,可以被重用。我有一種感覺,我做錯了。下面是我使用來調用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服務,並在發佈的對象中使用不同的信息。

感謝所有提前。

問候

回答

0

一切都在這個程序中,除了「postObject」呼大概應該是其他地方,例如在您的應用程序,委託時,應用程序啓動。

您正在設置映射,關係和請求描述符。您無需爲每次通話都指定它們。只需將它們設置一次,然後在準備就緒時調用「postObject」。對於你的serializationType也是如此 - 除非一些REST端點返回XML,而另一些端點返回JSON,否則你可以設置一次,並忘記它。

+0

嗯,我覺得有點笨,沒有想到這個我的自我...它運作良好。非常感謝你 – user2119777 2013-03-19 15:35:08

相關問題