0

外部ソースから JSON を取得するために 2 つの個別の要求を作成しています。これまでのところ、最初の要求からのデータの表示をテーブル ビューに実装しました。私の問題は、両方のデータ セットを 1 つのテーブル ビューに結合し、共通キー (この場合は created_time) でデータを並べ替える必要があることです。何らかの形式の配列を使用できることは理解していますが、これを行うにはどうすればよいですか?

最初:

NSURL *url = [NSURL URLWithString:myURL];
NSURLRequest *request = [NSURLRequest requestWithURL:url];

AFJSONRequestOperation *operation = [AFJSONRequestOperation
                                     JSONRequestOperationWithRequest:request
                                     success:^(NSURLRequest *request, NSHTTPURLResponse *response, id json) {
                                         self.results = [json valueForKeyPath:@"data"];
                                         [self.tableView reloadData];
                                     } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
                                     }];

[operation start];

二番目:

NSURL *url = [NSURL URLWithString:@"https://api.twitter.com/1.1/search/tweets.json"];
             NSDictionary *parameters = @{@"count" : RESULTS_PERPAGE,
                                          @"q" : encodedQuery};

             SLRequest *slRequest = [SLRequest requestForServiceType:SLServiceTypeTwitter
                                                     requestMethod:SLRequestMethodGET
                                                               URL:url
                                                        parameters:parameters];

             NSArray *accounts = [self.accountStore accountsWithAccountType:accountType];
             slRequest.account = [accounts lastObject];             
             NSURLRequest *request = [slRequest preparedURLRequest];
             dispatch_async(dispatch_get_main_queue(), ^{
                 self.connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
                 [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
             });
4

1 に答える 1

0

外部ソースからのデータを組み合わせるには、返された応答ごとに次の操作を行います。

また、例のために、扱うオブジェクトはすべて辞書であると想定しています。そうでない場合は、比較ブロックにロジックを追加して、created_timeそれぞれのオブジェクトのタイプに応じて値を取得する必要があります。

NSArray *data = [json valueForKeyPath: @"data"];        // This is the data from your first example. You'll have to do the same for your second example.

NSMutableArray *allResults = [NSMutableArray arrayWithArray: self.results];
[allResults addObjectsFromArray: data];
[allResults sortUsingComparator: ^NSComparisonResult(id obj1, id obj2) {

    NSDictionary *dict1 = obj1;
    NSDictionary *dict2 = obj2;

    return [[dict1 objectForKey: @"created_time"] compare: [dict2 objectForKey: @"created_time"]];
}];

[self setResults: allResults];
[self.tableView reloadData];
于 2013-07-29T19:44:44.470 に答える