2

私はiOSを初めて使用するので、何か助けがあればそれをいただければ幸いです。住所から経度と緯度を取得しようとしています。以前はコードは正常に機能していましたが、現在はJSONデータがnullになっています。

ここに私のサンプルコード、

     url = [NSString stringWithFormat:@"http://maps.google.com/maps/api/geocode/json?address=%@&sensor=false",appDelegate.sAddress];

    url=[url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSLog(@"Address URL: %@",url);

    //Formulate the string as a URL object.
    NSURL *requestURL=[NSURL URLWithString:url];
    NSData* data = [NSData dataWithContentsOfURL: requestURL];

    NSString *returnString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    NSLog(@"my Coordinate : %@",returnString);

    NSError* error;
    NSDictionary* json = [NSJSONSerialization 
                          JSONObjectWithData:data
                          options:kNilOptions 
                          error:&error];

しかし、私は出力をnullとして取得しています。

だから私を助けてください。

ありがとう!

4

3 に答える 3

1

すべてが私にたくさんのことを学ばせるというあなたの返事に感謝します。私の友人の一人として、私に解決策を教えてください。私はあなたと共有しています。

これがコードです、

url = [NSString stringWithFormat:@"http://maps.google.com/maps/api/geocode/json?address=%@&sensor=false",appDelegate.sAddress];

url=[url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"Address URL: %@",url);

//Formulate the string as a URL object.
NSURL *requestURL=[NSURL URLWithString:url];
NSData* data = [NSData dataWithContentsOfURL: requestURL];

NSString *returnString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

SBJSON *parser = [[SBJSON alloc] init];
NSDictionary *locationResult = [parser objectWithString:returnString];
//[reverseGeoString copy]`

そして、それはうまく機能しています。

しかし、それでもなぜこれが起こるのかという疑問があります。以前のように、そのコードは正常に機能していますが、突然機能しなくなりました。

于 2012-09-20T21:22:07.667 に答える
0

私はあなたが最も重要な「リクエスト」を逃していると言うでしょう...

これが私がすることです。それが役に立てば幸い:

    NSString *encodedAddress = (__bridge_transfer NSString *) CFURLCreateStringByAddingPercentEscapes(NULL, (__bridge_retained CFStringRef)searchBar.text, NULL, (CFStringRef) @"!*'();:@&=+$,/?%#[]",kCFStringEncodingUTF8 );

    NSString* searchURL = [NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/geocode/json?address=%@&sensor=true",encodedAddress];
    NSError* error = nil;
    NSURLResponse* response = nil;
    NSMutableURLRequest* request = [[NSMutableURLRequest alloc] init];

    NSURL* URL = [NSURL URLWithString:searchURL];
    [request setURL:URL];
    [request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
    [request setTimeoutInterval:30];

    NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

    if (error){
        NSLog(@"Error performing request %@", searchURL);
        return;
    }

    NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    if (jsonString!=nil){
        NSLog(@"%@",jsonString);
    }
于 2012-09-19T22:06:54.890 に答える
0

実際にデータを受け取る次のメソッドで returnString を作成する必要があります。

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

NSURLConnection とデリゲート メソッドの使用方法に関する追加情報については、こちらをご覧ください。

于 2012-09-19T21:29:36.587 に答える