私の質問は
RestKit: 文字列の単純な JSON 配列を取得する方法は?
ただし、元の作成者は回答が役立つと感じましたが、私はまだ迷っています。KVC
この質問には 2 つの個別の参照が含まれていますが、どちらも私 (との完全な初心者) を助けるには十分ではありませんでしたRestKit
。
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 つのプロパティを持つラッパー クラスを作成する必要があることを意味していますか?
@"someAttribute" とは何ですか? 繰り返しますが、これはラッパー クラスを暗示しているのでしょうか。その場合、someAttribute は NSArray * であるラッパー クラスのプロパティの名前になりますか?
もう 1 つの参照はhereであり、配列から「ラッパー クラス」へのフェッチを示していますが、ラッパー クラスには配列ではなく 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
直接アクセスする方法を理解することかもしれません。