Objective c 目标c将带参数的方法调用到另一个方法中

Objective c 目标c将带参数的方法调用到另一个方法中,objective-c,Objective C,如何将带参数的方法调用到另一个方法中 我在c班有个问题。 我的代码是 - (void)locationUpdate:(CLLocation *)location { location.coordinate.longitude]; googleUrl=[[NSString alloc]initWithFormat:@"https://maps.googleapis.com/maps/api/place /search/xml?location=%f,%f&radi

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

我在c班有个问题。 我的代码是

- (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];
}

我想把Google的URL值放在parseXML方法中

您的问题有点不清楚。我假设您正在询问如何将googleUrl值从locationUpdate方法传递到ParseXML\u of_Google\u PlacesAPI方法

如果是这种情况,则需要在后一个方法的签名中添加NSString参数

-(void) ParseXML_of_Google_PlacesAPI:(NSString *) googleUrl { ... }
然后,可以使用locationUpdate方法中的以下语法调用此方法:

[self ParseXML_of_Google_PlacesAPI:googleUrl];
这有用吗


(顺便说一句,如果您这样做,可能就没有必要将googleUrl设置为ivar/属性。只需在locationUpdate方法的范围中将其声明为NSString即可。)

您的问题有些不清楚。我假设您正在询问如何将googleUrl值从locationUpdate方法传递到ParseXML\u of_Google\u PlacesAPI方法

如果是这种情况,则需要在后一个方法的签名中添加NSString参数

-(void) ParseXML_of_Google_PlacesAPI:(NSString *) googleUrl { ... }
然后,可以使用locationUpdate方法中的以下语法调用此方法:

[self ParseXML_of_Google_PlacesAPI:googleUrl];
这有用吗


(顺便说一句,如果您这样做,可能不需要将googleUrl设置为ivar/属性。只需在locationUpdate方法的作用域中将其声明为NSString。)

您可以按如下方式更改parseXML\u of_Google\u PlacesAPI方法的签名:

-(void) ParseXML_of_Google_PlacesAPI: (NSString*) googleUrl {...}
// your previous code with the location
NSData* googleData = [self ParseXML_of_Google_PlacesAPI:googleUrl];
此外,将该方法的实现修改为:

NSURL *googlePlacesURL = [NSURL URLWithString:googleUrl];
return [NSData dataWithContentsOfURL:googlePlacesURL];
然后,您可以按如下方式调用该方法:

-(void) ParseXML_of_Google_PlacesAPI: (NSString*) googleUrl {...}
// your previous code with the location
NSData* googleData = [self ParseXML_of_Google_PlacesAPI:googleUrl];
两点:
-方法名的约定是以小写字母开头
-在更高的层次上,您试图做的是将某些功能封装在一个方法(parseXML)中。这是一个非常好的实践,因为它将使代码更具可读性。需要注意的一件事是选择好的方法名称;我会选择getXMLDataOfURL:(NSString*)url作为方法名。这将清楚地确定您试图通过这种方法实现的目标

-有关方法的最佳实践的健康讨论可以找到

您可以按如下方式更改parseXML\u of_Google\u PlacesAPI方法的签名:

-(void) ParseXML_of_Google_PlacesAPI: (NSString*) googleUrl {...}
// your previous code with the location
NSData* googleData = [self ParseXML_of_Google_PlacesAPI:googleUrl];
此外,将该方法的实现修改为:

NSURL *googlePlacesURL = [NSURL URLWithString:googleUrl];
return [NSData dataWithContentsOfURL:googlePlacesURL];
然后,您可以按如下方式调用该方法:

-(void) ParseXML_of_Google_PlacesAPI: (NSString*) googleUrl {...}
// your previous code with the location
NSData* googleData = [self ParseXML_of_Google_PlacesAPI:googleUrl];
两点:
-方法名的约定是以小写字母开头
-在更高的层次上,您试图做的是将某些功能封装在一个方法(parseXML)中。这是一个非常好的实践,因为它将使代码更具可读性。需要注意的一件事是选择好的方法名称;我会选择getXMLDataOfURL:(NSString*)url作为方法名。这将清楚地确定您试图通过这种方法实现的目标

-有关方法的最佳实践的健康讨论可以找到

get…
开头的方法名称通常采用指针参数,用于存储结果,cf.。感谢@gcbrueckmann,这是我以前不知道的。也将更新我的代码!以
get…
开头的方法名通常使用一个指针参数来存储结果,cf.。感谢@gcbrueckmann,这是我以前不知道的。也将更新我的代码!