2011-11-04 6 views
5

ネストされたパラメータの情報をレールアプリに投稿しようとすると問題が発生する。ASIHTTPRequestを使用してNSDictionaryを使用してネストされたパラメータをPOSTする

#pragma mark - Begin Network Operations 
- (void)beginNetworkOperation { 
    NSURL *requestURL = [NSURL URLWithString:[self retrieveURL]]; 
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:requestURL]; 

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_4_0 
    [request setShouldContinueWhenAppEntersBackground:YES]; 
#endif 

    [request setRequestMethod:@"PUT"]; 

    [request addRequestHeader:@"Content-Type" value:@"application/json"]; 

    [request addPostValue:strClientId forKey:@"client_id"]; 
    [request addPostValue:strAccessToken forKey:@"access_token"]; 

    NSDictionary *assetDictionary = [NSDictionary dictionaryWithObject:self.tags forKey:@"tags"]; 
    [request addPostValue:assetDictionary forKey:@"asset"]; 

    [request setDelegate:self]; 
    [request setDidFinishSelector:@selector(requestFinished:)]; 
    [request setDidFailSelector:@selector(requestFailed:)]; 
    [request startSynchronous]; 
} 

self.tagsしかしながら回(paramsは[:資産] [:タグ])タグパラメータを読み取ることができないレールサーバに到着、カンマ区切り値を持つだけNSStringのです。

答えて

2

ディクショナリオブジェクトではなくJSON文字列として辞書を渡してみてください。

あなたはより多くの互換性のためにiOS5をJSONライブラリ、またはこのいずれかを使用していることを行うことができます。

https://github.com/stig/json-framework

すると私は何をする私は、ヘッダ(をaddRequestHeader)を設定し、addPostValueを使用していることをかなり確信しているので、appendPostDataを使用しています互換機能ではありません。

ASIFormDataRequest *request; 
[request addRequestHeader:@"Content-Type" value:@"application/json"]; 
[request appendPostData:[[SBJsonWriter new] dataWithObject:myDictionaryToPassAsAnArgument]]; 

あなたがappendPostDataを使用する場合、あなたはどのaddPostValueを使用することはできません。 はここに私のコードの例です。すべてを辞書に入れなければなりません。

+0

[addPostValue:[assetDictionary JSONRepresentation] forKey:@ "asset"]をリクエストすることでこれを試しました。とレールサーバー "TypeError(整数にシンボルを変換することはできません)"で本当に意味がないように同じエラーが発生します.... – Kyle

+0

多分それはあなたの文字列の昏睡状態のため、昏睡のためですJSONのセパレータ。 あなたの刺し傷の昏睡状態を何か別のものに置き換えてみましょう。-stringByReplacingOccurrencesOfString:withString: – MatLecu

+0

私のテストデータにはまだカンマが含まれていません。 – Kyle

2

ここには、iOSのJSONKitを使用した作業コードのスニペットがあります。

+0

jQueryで.appendPostDataがIEで動作していません。私はIE 10を使用していますが、このための回避策はありますか? JavaScriptランタイムエラー:オブジェクトがプロパティまたはメソッドをサポートしていません 'appendPostData' – JaiSankarN

関連する問題