Objective C调用方法将参数转换为另一种方法

时间:2011-08-11 19:39:21

标签: objective-c

如何将带有参数的方法调用到另一个方法中。

我在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方法

2 个答案:

答案 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。)