1

最初の JSON 要求の作成と情報の逆シリアル化が正常に完了しました。あとは、辞書からいくつかの値を収集する方法を知るだけです。リクエストは次のようになります。

@implementation ViewController {
    GMSMapView *mapView_;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Make the URL connection in order to download JSON/XML data.
    NSString *urlAsString = @"weburlgoeshere...";
    NSURL *url = [NSURL URLWithString:urlAsString];
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
    NSOperationQueue *queue = [[NSOperationQueue alloc] init];

    // Error and success message handling.
    [NSURLConnection
    sendAsynchronousRequest:urlRequest
    queue:queue
     completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
         if([data length] > 0 &&
            error == nil){
             NSData *jsonData = [NSData dataWithContentsOfURL:url];

             if (jsonData != nil){
                 NSError *error = nil;

                 NSDictionary *result = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
                 if(error == nil)
                 NSLog(@"%@", [result valueForKey:@"merchants"]);
             }

         }
         else if ([data length] == 0 &&
         error == nil){
         NSLog(@"Nothing was downloaded");

         }
         else if (error != nil){
         NSLog(@"Error happened = %@", error);

         }


     }];

}

これは、コンソールにログアウトするものです。

branches =         (
                        {
                city = "......";
                country = "United States";
                countryIsoCode = USA;
                distanceInKms = "8.31";
                distanceInMiles = "5.16";
                id = 7952205;
                latitude = ".......";
                longitude = "........";
                name = ".......";
                state = ......;
                stateIsoCode = .....;
                street = ".........";
                telephone = "";
            }
        );
        id = 174535;
        logoUrl = ".......";
        name = ".......";

したがって、これらすべての値を「結果」と呼ばれる NSDictionary に保存しました。緯度と経度の特定のキー値を NSNumber収集して保存する方法を知りたいと思います。これらのほとんどをブロックで高速に列挙し、それに応じて処理する必要があるかもしれないと考えています。ここでの目的は、これらの値を使用してマップに表示することです。どんな助けでも大歓迎です!ありがとうございました!

4

1 に答える 1

1

この方法で、キーの必須値にアクセスできます。

NSArray * array = [dic objectForKey:@"branches"];
NSDictionary *furtherNames = array[0];
NSNumber *latitude = [NSNumber numberWithFloat:[[furtherNames objectForKey:@"latitude"] floatValue]];
NSNumber *longitude = [NSNumber numberWithFloat:[[furtherNames objectForKey:@"longitude"] floatValue]];

観察する必要があるのは、() => オブジェクトの配列、{} => 辞書です。したがって、それに応じてそれらをトラバースします。

お役に立てれば。

于 2013-09-04T10:18:11.560 に答える