ios - RestKit 删除和更新功能不起作用

标签 ios objective-c restkit

目前我正在使用一个使用 RestKit 进行通信的 iOS 应用程序。 我成功检索并添加了数据。但是从数据库中更新和删除数据不起作用。

我使用以下代码向数据库添加新条目:

[[RKClient sharedClient] get:@"/tblTests" delegate:self];
RKObjectMapping *venueMapping = [RKObjectMapping mappingForClass:[Venue class]];
RKURL *baseURL = [RKURL URLWithBaseURLString:@"http://10.10.3.101/WcfService1/WcfDataService1.svc/"];
RKObjectManager *objectManager = [RKObjectManager objectManagerWithBaseURL:baseURL];
objectManager.client.baseURL = baseURL;

[venueMapping mapKeyPathsToAttributes:@"Name",@"name", nil];
[objectManager.mappingProvider setMapping:venueMapping forKeyPath:@"value"];
[objectManager loadObjectsAtResourcePath:@"/tblTests/" delegate:self];
RKObjectMapping* venueMappingS = [RKObjectMapping mappingForClass:[Venue class]];
venueMappingS.setDefaultValueForMissingAttributes = YES;
[venueMappingS mapKeyPath:@"Name" toAttribute:@"name"];

RKObjectRouter *router = [[RKObjectRouter alloc] init];
[router routeClass:[Venue class] toResourcePath:@"/tblTests/"];
[router routeClass:[Venue class] toResourcePath:@"/tblTests/" forMethod:RKRequestMethodPOST];

[[[RKObjectManager sharedManager] mappingProvider] setMapping:venueMappingS forKeyPath:@"value"];
[[RKObjectManager sharedManager].mappingProvider setSerializationMapping:[venueMappingS inverseMapping] forClass:[Venue class]];
[RKObjectManager sharedManager].router = router;
[RKObjectManager sharedManager].serializationMIMEType = RKMIMETypeJSON;
[RKObjectManager sharedManager].acceptMIMEType = RKMIMETypeJSON;

Venue *venueName = [[Venue alloc] init];
venueName.name = @"Midhun MP";
venueName.Id  = 12;
[[RKObjectManager sharedManager] postObject:venueName delegate:self];

它工作得很好,然后我使用了相同的代码,只更改了这两行:

[router routeClass:[Venue class] toResourcePath:@"/tblTests/" forMethod:RKRequestMethodPOST];
[[RKObjectManager sharedManager] postObject:venueName delegate:self];

[router routeClass:[Venue class] toResourcePath:@"/tblTests/" forMethod:RKRequestMethodDELETE];
[[RKObjectManager sharedManager] deleteObject:venueName delegate:self];

这不起作用!

我的 field 类别:

@interface Venue : NSObject

@property (strong, nonatomic) NSString *name;
@property (nonatomic) int Id;

@end

我的 JSON 看起来像:

{"value":[{"Id":1,"Name":"Midhun"},{"Id":12,"Name":"Midhun MP"}]}

我找不到任何问题,请帮助我。

最佳答案

当您更新/删除对象并使用 Restful Web 服务时,您需要告知应更新哪个对象(及其 ID)。在 RestKit 中,您可以通过告诉路由器使用给定的 :attribute 来实现此目的。

[router routeClass:[Venue class] toResourcePath:@"/tblTests/:Id" forMethod:RKRequestMethodPOST];

顺便说一句,您使用的 RestKit 0.10 似乎很快就会过时。更新到0.20,找到一些更简单的方法以及 block 的使用就会容易很多。

关于ios - RestKit 删除和更新功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15877285/

相关文章:

iphone - 使用 strftime 将 NSDate 转换为字符串

ios - 更漂亮的 if 语句行为方式

ios - 在 Swift 中导入数据的最佳方式?

ios - 使用 MvvmCross 和 Xamarin 加载 .xib

ios - 架构 x86_64 框架的重复符号包含两次

javascript - 从 UIWebView 引用存储在 NSDocumentDirectory 中的视频

ios - Objective-c + RestKit - 在下一步之前等待响应

image - RestKit图片上传参数

ios - RestKit RKRequests 不会立即发送

ios - 通过试飞未收到苹果推送通知。虽然我使用的是生产 APNS 证书