質問

私の質問は

の重複です

Restkit:単純なJSON配列を取得する方法文字列の?

しかし、元の作者が答えが役に立つと発見されている間、私はまだ失われます。この質問には2つの別々の参照があり、どちらも私を助けるのに十分なほど遠くに行きません(KVCRestKitの完全な初心者)。

1つのリファレンスはここ

を参照してください。
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Whatever class]];
[mapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:nil toKeyPath:@"someAttribute"]];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping pathPattern:@"/whatever" keyPath:nil statusCodes:nil];
.

クラスは何であるべきか?それはNSSTRINGになるべきですか?あるいは、私はnsArray *?

の1つのプロパティを持つラッパークラスを作成する必要があります。

と@「SOMATTRIBUTE」とは何ですか?繰り返しますが、これはラッパークラスを暗示しているのです。その場合、SOMATTRIBUTEは、NSARRAY *?

である私のラッパークラスのプロパティの名前になるでしょう。

その他の参照は、こちら/ a>そしてそれが配列から "ラッパークラス"にフェッチすることを示す間、ラッパークラスには配列ではなくnsNumberのみが1つだけです。したがって、その例を配列全体を得るために機能するものにする方法は明らかではありません。

参照のためにサーバは、元の質問のように文字列の配列を返している:["" string1 "、" string2 "、" string3 "]。

更新

これは私が試みたコードです。ラッパークラスを作成しました。

@interface CannedResponse : NSObject

@property (strong, nonatomic) NSString * response;

@end
.

これはマッピングです:

RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[CannedResponse class]];
[mapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:nil toKeyPath:@"response"]];
[manager addResponseDescriptor:[RKResponseDescriptor responseDescriptorWithMapping:mapping method:RKRequestMethodGET pathPattern:RESPONSES_API_PATH keyPath:nil statusCodes:nil;
.

そして私はgetObjectsAtPathForRouteName

を呼び出しています

私が戻ってきたのは、期待通りにCannedReponsesの配列です。ただし、NSStringが応答プロパティに入れるのではなく。 RKMappingSourceObjectを得ています。 RKMappingSourceObjectは確かに正しい文字列を含みます。

コンソールのRestKitログインを検討して、もう少し手がかりがあるかどうかを確認します。

アップデート#2

上記のようにここ Blakewattersさんこの例では、RestKitの使用を回避するだけです。問題は、私がサービス層に書いているすべてのコードがRestKitを使用していて、すべての通話のパターンを盲目的に追跡していました。この呼び出しのために、正しい回答はAFNetworkingに直接アクセスする方法を理解することです。

役に立ちましたか?

解決

ここに他のコメントを使用して、Blakewatters ここ

このような要求にRestkitを使用しないでください。AFNETWORKINGを使用してそれを実行します。そしてあなたはこの

のようなafhttpclientにアクセスすることができます
[RKObjectManager sharedManager].HTTPClient
.

コードその後、このようなものに見える

AFHTTPClient * client = [RKObjectManager sharedManager].HTTPClient;
[client getPath:YOUR_PATH
     parameters:nil
        success:^(AFHTTPRequestOperation *operation, id responseObject) {
            success([NSArray arrayWithArray:responseObject]);
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            failure(operation.response.statusCode);
        }];
.

他のヒント

アップデートセクションでそれをやっている方法が作業します。

RkmappingSourceObjectは赤のニシンでした。それはNSProxyを実装しているので、それは私が期待していたNSStringのように機能します。

私の舞台裏について何が起こっているかについての推測:ReserializationとしてRkmappingSourceObjectインスタンスを作成します。私が持っているこれらのオブジェクトがプリミティブであり、それがマッピングオブジェクトにそれらを離れるだけではなく、それがその基礎となる文字列への要求を実行することができるので、それが何かにマッピングされていることを認識すると、それはNSProxyを実行することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top