2013-11-21 3 views
0

A ViewController запускает LocationTracking. Я хочу, чтобы NSLog обновлял местоположение (когда симулятор находится на автостраде), но didUpdateLocations регистрируется только при раскомментировании NSTimer, я не могу понять, почему. Я чувствую себя совершенно глупым, спрашивая об этом, это, наверное, что-то простое, я новичок в этом и долгое время пытался его решить.Не удалось получить мое местоположение для обновления

ViewController: 

#import "ViewController.h" 

@interface ViewController() 


@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    if ([defaults boolForKey:@"locationUpdate"]) { 
     LocationTracking *locationTracker = [[LocationTracking alloc] init]; 
     [locationTracker startTracking]; 
     NSLog(@"location tracking did"); 
     //NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:10 target:locationTracker selector:@selector(logLast) userInfo:nil repeats:YES]; 

    } 

} 

LocationTracking.h:

#import <UIKit/UIKit.h> 
#import <CoreLocation/CoreLocation.h> 

@interface LocationTracking : NSObject <CLLocationManagerDelegate> 
@property (nonatomic, strong) NSMutableArray *locations; 
-(void) startTracking; 
-(void) logLast; 

@end 

LocationTracking.m:

#import "LocationTracking.h" 

@interface LocationTracking() 
@property (nonatomic, strong) CLLocationManager *locationManager; 

@end 

@implementation LocationTracking 

-(void)startTracking 
{ 
    self.locations = [[NSMutableArray alloc] init]; 
    self.locationManager = [[CLLocationManager alloc] init]; 
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    self.locationManager.distanceFilter = kCLDistanceFilterNone; 
    [self.locationManager setDelegate:self]; 
    [self.locationManager startUpdatingLocation]; 

} 

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations 
{ 
    NSLog(@"did update %@",[locations lastObject]); 
} 

-(void)logLast 
{ 

} 
+0

didUpateLocations получить вызов на один раз или нет? –

+0

, когда таймер запускается (не закомментирован), didUpdateLocations обновляет и регистрирует каждый раз, когда местоположение обновляется. Но когда таймер закомментирован, он вообще не регистрируется, и поэтому я не думаю, что он срабатывает или получает вызов. – amk26cap

ответ

0

Следующий код прекрасно работает для меня:

#import "ViewController.h" 
@import CoreLocation; 

@interface ViewController() <CLLocationManagerDelegate> 

@property (strong,nonatomic) CLLocationManager *locationManager; 

@end 

@implementation ViewController 

- (void)viewDidLoad { 

    [super viewDidLoad]; 

    self.locationManager = [[CLLocationManager alloc] init]; 
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    self.locationManager.distanceFilter = kCLDistanceFilterNone; 
    [self.locationManager setDelegate:self]; 
    [self.locationManager startUpdatingLocation]; 

} 

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { 

    CLLocation *loc = [locations lastObject]; 
    NSString *lat = [NSString stringWithFormat:@"%.2f",loc.coordinate.latitude]; 
    NSString *lon = [NSString stringWithFormat:@"%.2f",loc.coordinate.longitude]; 

    NSLog(@"location is: %@, %@",lat,lon); 
} 


@end 

И если вы используете симулятор в Xcode, не забудьте установить место для симулятора. По умолчанию для новых проектов по умолчанию используется значение «Нет».

+0

Я вообще не хочу использовать NSTimer, но прямо сейчас он работает только, если у меня есть (вызов пустого метода), я хочу, чтобы метод didUpateLocations создавал журналы. Изменив это, я полностью прекратил ведение журнала, так же как комментируя это. – amk26cap

+0

Вы фактически '#import" LocationTracking.h "' в свой 'ViewController.m'? Я не вижу этого в вашем примере кода. – wigging

+0

@ Gavin Если он не включил «LocationTracking.h» в ViewController. как получить код для компиляции? –

Смежные вопросы