-2

JSONParserクラスに2つのリクエスト(A&B)があります。BはAの応答に依存しています。どちらの要求もJSON応答を返します。これらの2つの応答を使用すると、オブジェクトCが作成されます。次に、CをViewControllerに戻します。

4

1 に答える 1

0

私の例です。これは非常に予備的なものですが、方法を理解することはできます.... また、エラー チェックを追加する必要があります。

typedef void(^ResultBlock)(id data);

- (NSDictionary *)dataFromURL:(NSString *)url {
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
    NSURLResponse *response;
    NSError *error;
    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    NSDictionary* document = [NSJSONSerialization
                              JSONObjectWithData:responseData //1
                              options:kNilOptions
                              error:&error];
    return document;
}

- (void)getSomeDataWithCompletion:(ResultBlock)completion {

    NSOperationQueue *q = [[NSOperationQueue alloc] init];
    [q addOperation:[NSBlockOperation blockOperationWithBlock: ^ {
        NSDictionary *response1 = [self dataFromURL:@"server/api1"];

        id result = nil;
        if (response1) {
            NSDictionary *response2 = [self dataFromURL:[NSString stringWithFormat:@"%@/%@", @"server/api2", [response1 objectForKey:@"someParameter"]]];
            result = [response2 objectForKey:@"iFindThisObject"];
        }
        completion(result);
    }]];
}

- (void)performRequest {
    [self getSomeDataWithCompletion:^(id data) {
        NSLog(@"Result %@", data);
    }];
}
于 2012-10-10T08:22:54.473 に答える