在iOS模拟器上测试假的当前位置无效

时间:2014-10-18 14:52:12

标签: ios objective-c geolocation ios-simulator

我一直试图在iOS模拟器中伪造我的位置,但我一直在阅读的方法无效。我已经使用调试器来设置我的假位置,并在Debug-> Location-> Custom Location中创建了一个自定义位置,但我仍然记录了纬度为0.000的0.000。 我正在使用此代码查找当前位置。

- (IBAction)currentLocationButtonPressed:(UIButton *)sender
{
    //Search for pubs and bars in current location.
    //Push to tableViewController
    NSLog(@"current location Pressed.");

    locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; // Best accuracy
    [locationManager startUpdatingLocation];
    NSLog(@"%@",[self deviceLocation]);
}

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    NSLog(@"didUpdateToLocation: %@", newLocation);
    CLLocation *currentLocation = newLocation;

    if (currentLocation != nil) {
        NSLog(@"Latitude: %f Longitude: %f", currentLocation.coordinate.latitude, currentLocation.coordinate.longitude);
    }
}

- (NSString *)deviceLocation {
    return [NSString stringWithFormat:@"latitude: %f longitude: %f", locationManager.location.coordinate.latitude, locationManager.location.coordinate.longitude];
}

委托已设置,我正在请求授权。

- (void)viewDidLoad {
    [super viewDidLoad];

    searchLocationTextField.delegate = self;
    locationManager.delegate = self;
    locationManager = [[CLLocationManager alloc]init];
    [locationManager requestWhenInUseAuthorization];  // For foreground access
    [locationManager requestAlwaysAuthorization]; // For background access

}

1 个答案:

答案 0 :(得分:0)

在分配后将locationManager委托设置为。

locationManager = [[CLLocationManager alloc]init];
locationManager.delegate = self;
不推荐使用

locationManager:didUpdateToLocation:fromLocation:委托方法,而是使用locationManager:didUpdateLocations:

-(void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    CLLocation *currentLocation = [locations lastObject];

    NSLog(@"Latitude: %f Longitude: %f", currentLocation.coordinate.latitude, currentLocation.coordinate.longitude);
}