Ios 如何将CLLCoordinated2D lat/long转换为NSNumber

Ios 如何将CLLCoordinated2D lat/long转换为NSNumber,ios,objective-c,generics,nsnumber,Ios,Objective C,Generics,Nsnumber,我正在尝试使用YelpAPI,并且我正在尝试使用lat/long作为API搜索的参数。但是,它不接受double类型,它只接受Objective-C对象。由于不了解Objective-C,您建议lat和long be参数的类型是什么?我尝试了NSNumber,但当我尝试将类型为CLLocationCoordinate2D的lat/long坐标转换为接受双精度的NSNumber时,其值为零 以下是我正在使用的Yelp API: - (void)queryTopBusinessInfoForTerm

我正在尝试使用YelpAPI,并且我正在尝试使用lat/long作为API搜索的参数。但是,它不接受double类型,它只接受Objective-C对象。由于不了解Objective-C,您建议lat和long be参数的类型是什么?我尝试了NSNumber,但当我尝试将类型为
CLLocationCoordinate2D
的lat/long坐标转换为接受双精度的NSNumber时,其值为零

以下是我正在使用的Yelp API:

- (void)queryTopBusinessInfoForTerm:(NSString *)term location:(NSString *)location latitude:(NSNumber *)latitude longitude:(NSNumber *)longitude completionHandler:(void (^)(NSDictionary *topBusinessJSON, NSError *error))completionHandler {

  NSLog(@"Querying the Search API with term \'%@\' and location \'%@'", term, location);

  //Make a first request to get the search results with the passed term and location
  NSURLRequest *searchRequest = [self _searchRequestWithTerm:term location:location latitude:latitude longitude:longitude];
  NSURLSession *session = [NSURLSession sharedSession];
  [[session dataTaskWithRequest:searchRequest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;

if (!error && httpResponse.statusCode == 200) {

  NSDictionary *searchResponseJSON = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
  NSArray *businessArray = searchResponseJSON[@"businesses"];

  if ([businessArray count] > 0) {

    NSDictionary *firstBusiness = [businessArray firstObject];
    NSString *firstBusinessID = firstBusiness[@"id"];
    NSLog(@"%lu businesses found, querying business info for the top result: %@", (unsigned long)[businessArray count], firstBusinessID);

    [self queryBusinessInfoForBusinessId:firstBusinessID completionHandler:completionHandler];
  } else {
    completionHandler(nil, error); // No business was found
  }
} else {
  completionHandler(nil, error); // An error happened or the HTTP response is not a 200 OK
}
  }] resume];
}
这是两个情人

- (NSURLRequest *)_searchRequestWithTerm:(NSString *)term location:(NSString *)location latitude:(NSNumber *) latitude longitude:(NSNumber *)longitude {
  NSDictionary *params = @{
                       @"term": term,
                       @"location": location,
                       @"cll": latitude,
                       @"cll": longitude,
                       @"limit": kSearchLimit
                       };

  return [NSURLRequest requestWithHost:kAPIHost path:kSearchPath params:params];
}
下面是我当前从YelpAPi调用查询的Swift方法:

func yelpApi() {
    var latitude = NSNumber(double: businessStreetAddress.latitude)
    var longitude = NSNumber(double: businessStreetAddress.longitude)
    var searchTerm: NSString = "Asian Food";
    var defaultLocation: NSString = "New York"
    var APISample:YPAPISample = YPAPISample();

    var requestGroup:dispatch_group_t = dispatch_group_create();


    APISample.queryTopBusinessInfoForTerm(searchTerm as String, location: defaultLocation as String, latitude: latitude, longitude: longitude) { (topBusinessJSON: [NSObject: AnyObject]!, error: NSError!) -> Void in
        if((error) != nil) {
            println("Error happened during the request" + error.localizedDescription);
        } else if((topBusinessJSON) != nil) {
            println("Top business info",topBusinessJSON);
        } else {
            println("No business was found");
        }

        dispatch_group_leave(requestGroup);
    }

    dispatch_group_wait(requestGroup, DISPATCH_TIME_FOREVER);


}

要将
CLLocationCoordinate2D
转换为
NSNumber
,您不能在单个
NSNumber
中使用它。您可以转换为两个
NSNumber
对象,如下所示:

 CLLocationCoordinate2D location; // This is the location you have.
 NSNumber *latitude = [NSNumber numberWithDouble:location.latitude];
 NSNumber *longitude = [NSNumber numberWithDouble:location.longitude];
使用现代ObjC,您可以隐藏为:

 CLLocationCoordinate2D location; // This is the location you have.
 NSNumber *latitude = @(location.latitude);
 NSNumber *longitude = @(location.longitude);
打电话给你的

NSURLRequest *searchRequest = [self _searchRequestWithTerm:term location:location latitude:latitude longitude:longitude];
不要与我刚刚命名的名为like
location
的变量混淆。因为函数
searchRequestWithTerm:location:latitude:longitude:
有一个名为
location
的参数,它接受
NSString


这可能会对您有所帮助。

请描述更多(显示您的方法(yelp api),检查编辑的问题:)您是否也知道如何解决此问题?