如何将带有参数的方法调用到另一个方法中。
我在Objective c class中遇到了问题。 我的代码是
- (void)locationUpdate:(CLLocation *)location {
location.coordinate.longitude];
googleUrl=[[NSString alloc]initWithFormat:@"https://maps.googleapis.com/maps/api/place /search/xml?location=%f,%f&radius=500&name=the%20money&sensor=false& key=AIzaSyCcC9pmri9XGOgyhjoHQq37cmcfgsfb6bBZe80",location.coordinate.latitude,location.coordinate.longitude];
}
-(void)ParseXML_of_Google_PlacesAPI {
NSURL *googlePlacesURL = [NSURL URLWithString:googleUrl];
NSData *xmlData = [NSData dataWithContentsOfURL:googlePlacesURL];
}
我想将googleUrl值放在parseXML方法
中答案 0 :(得分:3)
您可以按如下方式更改parseXML_of_Google_PlacesAPI方法的签名:
-(void) ParseXML_of_Google_PlacesAPI: (NSString*) googleUrl {...}
此外,将方法的实现修改为:
NSURL *googlePlacesURL = [NSURL URLWithString:googleUrl];
return [NSData dataWithContentsOfURL:googlePlacesURL];
然后,您可以按如下方式调用该方法:
// your previous code with the location
NSData* googleData = [self ParseXML_of_Google_PlacesAPI:googleUrl];
几点:
- 方法名称的约定是以小写字母开头。
- 在更高层次上,您要做的是将某些功能封装在方法(parseXML)中。这是一个非常好的做法,因为它会使您的代码更具可读性。要注意的一件事是选择好的方法名称;我会选择getXMLDataOfURL:(NSString *)url作为方法名称。这将清楚地确定您在此方法中要实现的目标。
- 可以找到关于方法的最佳实践的健康讨论here.
答案 1 :(得分:2)
你的问题有点不清楚。我假设你问你如何将googleUrl值从locationUpdate方法传递给ParseXML_of_Google_PlacesAPI方法。
如果是这种情况,那么您需要在后一种方法的签名中添加NSString参数。
-(void) ParseXML_of_Google_PlacesAPI:(NSString *) googleUrl { ... }
然后,您可以使用locationUpdate方法中的以下语法来调用此方法:
[self ParseXML_of_Google_PlacesAPI:googleUrl];
这有帮助吗?
(顺便说一句,如果你这样做,可能就没有必要将googleUrl设置为ivar / property。只需在locationUpdate方法的范围内将其声明为NSString。)