我正在開發中,我想展示基於當前位置 對於在的applicationDidFinishLaunching我做這個最近的餐館的iPhone應用程序:如何等待當前位置的位置管理器?
self.locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
NSURL *url = [[NSURL alloc] initWithString:@"http://192.168.0.150/server1/Service.asmx/nearest?lat1=23.013163&lon1=72.559068"];
NSMutableURLRequest* request2=[NSMutableURLRequest requestWithURL:url];
[request2 setHTTPMethod:@"GET"];
[request2 setTimeoutInterval:10];
NSURLResponse *response=nil;
NSError *err=nil;
NSData *data1=[[NSURLConnection sendSynchronousRequest:request2 returningResponse:&response error:&err] retain];
if(data1 == nil)
{
UIAlertView* alert = [[UIAlertView alloc]initWithTitle:@"Alert" message:@"The network is not available.\n Please check the Internet connection." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
}
else
{
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:data1];
//Initialize the delegate.
XMLParser *parser = [[XMLParser alloc] initXMLParser];
//Set delegate
[xmlParser setDelegate:parser];
//Start parsing the XML file.
@try {
BOOL success = [xmlParser parse];
if(success)
NSLog(@"No Errors");
else
NSLog(@"Error Error Error!!!");
}
@catch (NSException * e) {
NSLog(@"Exception in parsing %@ %@",[e name], [e reason]);
}
}
問題的方案。
位置管理器開始更新Web服務被之前執行的位置
,所以我不能得到的位置值。
我我把網絡服務調用放在委託方法中,然後在web服務執行之前啓動應用程序。 在委託方法中,我在適當的字符串中設置緯度和經度。
的問題是,如何確保服務不會被調用,直到位置管理器更新的位置,然後通過位置到Web服務,然後調用Web服務..
最重要的建議,我可以給:不要做這一切在你的應用程序代理像這樣,不要試圖強迫你的應用程序與網絡同步交互。這可能不太複雜的代碼,但它是一個更糟糕的用戶體驗。核心位置和URL加載系統在默認情況下都是異步的。擁抱那個! – 2009-10-28 06:19:47
我不明白你的想法。你能否詳細說明一下。 – harshalb 2009-10-28 06:38:55