2011-10-26 27 views
8

Tôi đang sử dụng RestKit để kết nối với Dịch vụ dữ liệu WCF của chúng tôi.Bỏ qua phản hồi khi thực hiện postObject trong RestKit cho iOS

Tôi gặp sự cố khi thêm thực thể bằng hàm postObject của RKObjectManager do các vấn đề về ánh xạ phản hồi.

Khi một thực thể được thêm vào, WCF Data Services trả về mã trạng thái 201 và thực thể mới được thêm (làm phản hồi).

Có thể bỏ qua phản hồi và chỉ sử dụng mã trạng thái được trả lại để kiểm tra xem liệu thành công đã thêm chưa?

Ponnu

Trả lời

1

Tại sao bạn muốn bỏ qua thực thể mới được trả về từ máy chủ? Lập bản đồ kết quả là hữu ích để giữ trong đồng bộ hóa đại diện địa phương của bạn với một trong những máy chủ. Máy chủ có thể đã ghi đè lên một số trường của đối tượng của bạn như id đối tượng và bạn muốn theo dõi nó.

Nếu bạn có lỗi ánh xạ, có thể là do phản hồi đối với hành động POST trả về biểu diễn đối tượng khác với đối tượng được trả về bằng GET. Các bạn đã cố gắng sử dụng:

- (RKObjectLoader*)postObject:(id<NSObject>)object mapResponseWith:(RKObjectMapping*)objectMapping delegate:(id<RKObjectLoaderDelegate>)delegate

thay vào đó và xác định một ánh xạ phù hợp hơn cho dữ liệu trả về?

0

Vấn đề ở đây có thể là thay đổi dịch vụ REST, vì vậy thay vào đó, một giải pháp đơn giản là bỏ qua cuộc gọi lại đến didFailWithError trong trường hợp các cuộc gọi postObject đến một đường dẫn tài nguyên nhất định.

- (void)objectLoader:(RKObjectLoader *)objectLoader didFailWithError:(NSError *)error { 
if ([objectLoader wasSentToResourcePath:@"/rest/api/returns/201" method:RKRequestMethodPOST] && [[objectLoader response] statusCode]==201) { 
    NSLog(@"Object created"); 
} else { 
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Communication error" 
                 message:[NSString stringWithFormat:@"Received status code %d: %@",                        objectLoader.response.statusCode,                        error.localizedDescription]               delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [alertView show]; 
} 
0

Tạo một RKObjectMapping không quan tâm đến bất kỳ tham số nào phản hồi.

[RKObjectMapping mappingForClass: [NSNull class]]; 
Các vấn đề liên quan