2012-04-09 9 views
2

REST APIで動作するサーバーのデータを更新したいと思います。私はiosデバイスからRESTKITを使用しています。しかし、私はrestkitでPUTを使用する方法を見つけることができませんでした。IOS RESTKIT HTTP PUTの例

私はkey: "user_id"の値: "2"のようなデータを送る必要があります。誰もこの問題を解決するために私を助けて... :(

+0

スタートコードを作成しましたか?たとえば、Restkitを設定する。あなたは仲間や仲間を使ったことがありますか? – Beber

+0

私はRESTkitを設定しました。しかし、私は今までそれを使用していませんでした。 POSTとGETのためにASIFormDataRequestを使用しましたが、PUTを使用しようとすると問題が発生します。だから私はRESTKITを切り替えることにしました。しかし私が得たチュートリアルでは、PUT(私が使いたい方法)のための適切な例が見つかりませんでした。だから誰かがそれを行う方法を知っているなら、それは私にとって非常に役に立つでしょう.thanks – Samin

+0

RKObjectManagerを使用している場合は、 "put"をどのように行うことができるのか分かります。 RKObjectManagerを使用した例が必要な場合は、私がお手伝いします。 – Beber

答えて

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

あなたの(.M)で
#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 

- (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を持っていけない、それはdiffcultですコード構造について助けてください。ご質問がございましたら、お気軽にお問い合わせください。

+0

ありがとう..ちょうどそれを実行可能にしました.. – Samin