2

RESTAPIで動作するサーバーのデータを更新したい。iOSデバイスからRESTKITを使用しています。しかし、restkitでPUTを使用する方法を見つけることができませんでした。

key: "user_id" value:"2"これらの形式のようなデータを送信する必要があります。誰かがこの問題を解決するのを手伝ってくれませんか..:(

4

1 に答える 1

1

SOKeyValue.h:呼び出しのパラメーターとして使用されるシリアル化されたオブジェクト。

#import <Foundation/Foundation.h>

@interface SOKeyValue : NSObject
@property (nonatomic, retain) NSString* key;
@property (nonatomic, retain) NSString* value;
@end

Restkitを初期化するための簡略化されたコードは次のとおりです。

/*
 This part of code must be executed only one time in your application
*/
//To see logs
RKLogConfigureByName("RestKit/Network", RKLogLevelTrace);

//Init with good domain
RKObjectManager* manager = [RKObjectManager    objectManagerWithBaseURL:@"http://mydomain.dev/ui/v1"];

//Indicate to use JSON
[RKObjectManager sharedManager].serializationMIMEType = RKMIMETypeJSON;

//Route path when you call a PUT with SOKeyValue class
[manager.router routeClass:[SOKeyValue class] toResourcePath:@"/yourpath" forMethod:RKRequestMethodPUT];

//Serialization for SOKeyValue class
RKObjectMapping* keyvalueSerializationMapping = [RKObjectMapping mappingForClass:[NSMutableDictionary class] ];
[authSerializationMapping mapAttributes:@"key", @"value", nil];
[[RKObjectManager sharedManager].mappingProvider setSerializationMapping:keyvalueSerializationMapping  forClass:[SOKeyValue class] ];

これで、PUTを使用するサービスを実装できます。呼び出しを実装するオブジェクトでは、restkitデリゲートRKObjectLoaderDelegateを忘れないでください。

#import <Foundation/Foundation.h>
#import <RestKit/RestKit.h>
#import "SOKeyValue.h"
@interface MyViewOrMyServiceObject: NSObject <RKObjectLoaderDelegate>
- (void)putKeyValue;
- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects;
- (void)objectLoader:(RKObjectLoader*)objectLoader didFailWithError:(NSError*)error;
@end

あなたの(.m)で:

- (void)putKeyValue 
{

    SOKeyValue *keyvalue = [[SOKeyValue alloc] init];
    keyvalue.key = @"k";
    keyvalue.value = @"2";
    [[RKObjectManager sharedManager] putObject:keyvalue delegate:self];
    [keyvalue release];
}

トレースでステータスコードを確認し、コールバック関数を使用できます。

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects;
- (void)objectLoader:(RKObjectLoader*)objectLoader didFailWithError:(NSError*)error;

だから私は家にMACを持っていません、それはコード構造についてあなたを助けるのは難しいです。ご不明な点がございましたら、お気軽にお問い合わせください。

于 2012-04-09T20:33:05.147 に答える