0

現在、通信に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];

それは完全に機能し、次の2行のみを変更して同じコードを使用しました。

[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];

これは機能していません!!!

私の会場クラス:

@interface Venue : NSObject

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

@end

私のJSONは次のようになります。

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

問題が見つかりませんでした。助けてください。

4

1 に答える 1

1

オブジェクトを更新/削除し、安静な Web サービスを使用する場合、どのオブジェクトを (その ID と共に) 更新する必要があるかを伝える必要があります。RestKit では、指定された を使用するようにルーターに指示することでこれを実現できます:attribute

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

ところで、すぐに古くなるRestKit 0.10を使用しているようです。0.20 にアップデートして、より簡単な方法とブロックの使用法を見つけてください。

于 2013-04-08T17:22:15.917 に答える