5 cocoa-touch cllocation ios ios7
我正在使用CLLocationDistance两点之间的距离,但是当我在其中传递当前位置时我收到错误.
CLLocation *current = [[CLLocation alloc] initWithLatitude:startLocation.coordinate.latitude longitude:startLocation.coordinate.longitude];
CLLocation *itemLoc = [[CLLocation alloc] initWithLatitude:[[[getName objectAtIndex:indexPath.row] objectForKey:@"lat"] doubleValue] longitude:[[[getName objectAtIndex:indexPath.row] objectForKey:@"lon"] doubleValue]];
//Here the current location gives me an error "Initializing cllocation with an expression incompatible format"
CLLocationDistance *itemDist = [itemLoc distanceFromLocation:current];
NSLog(@"Distance: %@", itemDist);
Run Code Online (Sandbox Code Playgroud)
小智 5
你得到的错误实际上是:
使用不兼容类型“CLLocationDistance”(又名“double”)的表达式初始化“CLLocationDistance *”(又名“double *”)
它的意思是你正在初始化itemDist(你已经声明为 a CLLocationDistance *)到返回 a CLLocationDistance(注意没有星号)的东西。
CLLocationDistance不是一个对象。
它只是一个原始类型(特别是double- 请参阅核心位置数据类型参考)。
因此,与其声明itemDist为指向a 的指针,不如将其CLLocationDistance声明为 a CLLocationDistance(无星号):
CLLocationDistance itemDist = [itemLoc distanceFromLocation:current];
Run Code Online (Sandbox Code Playgroud)
您还需要更新NSLog以期望双精度而不是对象,否则它会在运行时崩溃:
NSLog(@"Distance: %f", itemDist);
Run Code Online (Sandbox Code Playgroud)
swift 2.0是否采用以下方式:
let userLocation:CLLocation = CLLocation(latitude: 11.11, longitude: 22.22)
let priceLocation:CLLocation = CLLocation(latitude: 33.33, longitude: 44.44)
let meters:CLLocationDistance = userLocation.distanceFromLocation(priceLocation)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13262 次 |
| 最近记录: |