2011-08-16 64 views
0

在我的應用程序具有定位功能:問題在傳遞函數iphone之爭

- (void)locationUpdate:(CLLocation *)location {  
    lati = [[NSString alloc]initWithFormat:@"%f", location.coordinate.latitude] ; 
    longi = [[NSString alloc ]initWithFormat:@"%f", location.coordinate.longitude ];  
    [self ParseXML_of_Google_PlacesAPI:googleUrl]; 
} 

...我有其他功能,我想通過拉提和隆基:

-(void)ParseXML_of_Google_PlacesAPI:(NSString *)_googleUrl { 
    //use lati and longi in this line 
    googleUrl=[NSString stringWithFormat:@"https://maps.googleapis.com/maps/api/place/search/xml?location=%f,%f&radius=500&name=asda&sensor=false&key=mykey",lati,longi]; 
    NSURL *googlePlacesURL = [NSURL URLWithString:googleUrl ]; 
    NSData *xmlData = [NSData dataWithContentsOfURL:googlePlacesURL]; 
    xmlDocument = [[GDataXMLDocument alloc]initWithData:xmlData options:0 error:nil]; 
    NSArray *arr = [xmlDocument.rootElement elementsForName:@"result"]; 
    placesOutputArray=[[NSMutableArray alloc]init]; 
    for(GDataXMLElement *e in arr){   
      [placesOutputArray addObject:e]; 
    } 
} 

我怎樣才能做到這一點?我只需要在ParseXML_of_Googe_PlacesApi:方法中的值latilongi。其他一切工作正常

+0

您傳遞參數'_googleUrl'爲'ParseXML_of_Google_PlacesAPI:'但是你沒有在該方法中使用它。 – TechZen

回答

2

您需要修改ParseXML_of_Google_PlacesAPI:(的NSString *)_ googleUrl方法採取其他參數:

即)ParseXML_of_Google_PlacesAPI:(的NSString *)_ googleUrl長:(浮點)經度緯度:(浮動)緯度

如果浮點數如果浮動或用NSString替換float,如果它們是方法中的nsstrings,則可以使用浮點數。

然後,您可以使用nsstringformat重新格式化您的URL。

3

更改您的聲明:

-(void)ParseXML_of_Google_PlacesAPI:(NSString *)_googleUrl withLat:(NSString*)lati andLong:(NSString*)longi { 

然後改變你的調用代碼:

[self ParseXML_of_Google_PlacesAPI:googleUrl withLat:lati andLong:longi]; 
2

重寫你的方法

- (void)parseXMLOfGooglePlacesAPI:(NSString *)url latitude:(NSString *)latitude longitude:(NSString *)longitude; 

,然後把它作爲

[self parseXMLOfGooglePlacesAPI:googleURL latitude:late longitude:longi]; 
2

如果您不希望重寫方法,或者你需要使用的變量在一個以上的方法,使這一代碼將出現在類的latilongi性能。

.h文件中,可以定義:

@property(nonAtomic, retain) NSString *lati; 
@property(nonAtomic, retain) NSString *longi; 

..並在.m文件,你會:

@synthesize lati, longi; 

那麼你可以使用他們喜歡的:

- (void)locationUpdate:(CLLocation *)location { 
    self.lati = [[NSString alloc]initWithFormat:@"%f", location.coordinate.latitude] ; 
    self.longi = [[NSString alloc ]initWithFormat:@"%f", location.coordinate.longitude ];  
    [self ParseXML_of_Google_PlacesAPI:googleUrl]; 
} 

...和:

-(void)ParseXML_of_Google_PlacesAPI:(NSString *)_googleUrl { 
    googleUrl=[NSString stringWithFormat:@"https://maps.googleapis.com/maps/api/place/search/xml?location=%f,%f&radius=500&name=asda&sensor=false&key=mykey",self.lati,self.longi]; 
    NSURL *googlePlacesURL = [NSURL URLWithString:googleUrl ]; 
    NSData *xmlData = [NSData dataWithContentsOfURL:googlePlacesURL]; 
    xmlDocument = [[GDataXMLDocument alloc]initWithData:xmlData options:0 error:nil]; 
    NSArray *arr = [xmlDocument.rootElement elementsForName:@"result"]; 
    placesOutputArray=[[NSMutableArray alloc]init]; 
    for(GDataXMLElement *e in arr){   
      [placesOutputArray addObject:e]; 
    } 
}