私の JSON 応答は次のようになります。
{
"enabled": false,
"number_of_articles": 20,
"new_users": [
{
"id": "5001",
"name": "Jimmy Valner"
},
],
"articles" : [
{
"id" : 33122,
"title" : "Something",
"authors": [
{
"id": "511",
"name": "Somebody"
},
{
"id": "51",
"name": "Somebody else"
}
}]
}
私が知っている適切なRESTful応答ではありません。しかし、どうにかして 2 つの異なるエンティティ (ユーザーと記事) にマップする必要があります。記事部分の作業コードが既にあります。Article と Articles をリレーションとしてマップします。私はこのようにやっています:
RKMapping *mapping = [MappingProvider articlesMapping];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor
responseDescriptorWithMapping:mapping
pathPattern:@"/articles/:userId/latest"
keyPath:@"articles"
statusCodes:statusCodeSet];
NSURLRequest *request = [[RKObjectManager sharedManager] requestWithObject:nil
method:RKRequestMethodGET
path:[NSString stringWithFormat:@"/articles/%@/latest", [[CredentialStore sharedInstance] userId]]
parameters:nil];
RKManagedObjectStore *store = [[DataModel sharedDataModel] objectStore];
RKManagedObjectRequestOperation *operation = [[RKManagedObjectRequestOperation alloc] initWithRequest:request
responseDescriptors:@[responseDescriptor]];
operation.managedObjectCache = store.managedObjectCache;
operation.managedObjectContext = store.mainQueueManagedObjectContext;
[operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSLog(@"%@", mappingResult.array);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"ERROR: %@", error);
NSLog(@"Response: %@", operation.HTTPRequestOperation.responseString);
}];
[operation start];
これは期待どおりに機能しています。メソッドでマッピング手順を提供し+ (RKMapping *)articlesMapping
ます。JSON 応答の作成者の部分も適切にマッピングされています。
new_users
ここで、配列を別のエンティティにマップしたいと思います(明らかにユーザー)。サーバーへの別のリクエストを呼び出さないようにするにはどうすればよいですか? 別の作成に成功しましたRKManagedObjectRequestOperation *operation
が、もちろん、回避したいサーバーへの別のネットワーク要求をトリガーします。ここで解決策を探す必要がありますか、RKObjectManager
または何らかの方法で keyPath を変更してルートレベルで開始し、+ (RKMapping *)
メソッド内のさまざまなエンティティのマッピングを行う必要がありますか (おそらくそうではありません) ?
そして別の質問..このJSONからプロパティにアクセスするenabled
にはどうすればよいですか? number_of_articles
繰り返しますが、構造化された安らかな応答を扱っているわけではありませんが、何らかの方法で対処する必要があります。どうにかしてこのプロパティにアクセスしたいだけです...エンティティへのマッピングは必要ありません。