Restkitを使用して単純なJSONの文字列を取得する方法
-
20-12-2019 - |
質問
私の質問は
の重複ですしかし、元の作者が答えが役に立つと発見されている間、私はまだ失われます。この質問には2つの別々の参照があり、どちらも私を助けるのに十分なほど遠くに行きません(KVC
と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つのプロパティを持つラッパークラスを作成する必要があります。と@「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
コンソールのRestKit
ログインを検討して、もう少し手がかりがあるかどうかを確認します。
上記のようにここ 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を実行することができます。