我在.m文件中有以下代码。
代码是执行以下任务:
代码为所有这些属性提供初始值。但是,每个属性的值都相同(即2.7188880)。
此外,当我通过方法“locationUpdate”循环时,代码为每个属性返回0。
有人能告诉我代码没有返回属性值的原因吗?
- (void)viewDidLoad {
[super viewDidLoad];
locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:self];
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
[locationManager startUpdatingLocation];
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval: 2.0
target: self
selector:@selector(locationUpdate)
userInfo: nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
NSString *spd = [[NSString alloc] initWithFormat:@"%f", speed];
NSString *crd = [[NSString alloc] initWithFormat:@"%f", coordinates];
NSString *drc = [[NSString alloc] initWithFormat:@"%f", direction];
NSString *acc = [[NSString alloc] initWithFormat:@"%f", accuracy];
NSString *desc = [locationManager description];
NSLog(@"Speed: %@", spd);
NSLog(@"Coordinates: %@", crd);
NSLog(@"Direction: %@", drc);
NSLog(@"Accuracy: %@", acc);
NSLog(@"Description: %@", desc);
Speedometer.text = spd;
CoordinatesLabel.text = crd;
DirectionLabel.text = drc;
AccuracyLabel.text = acc;
DescriptionLabel.text = desc;
}
- (void)locationUpdate {
NSString *desc = [locationManager description];
NSString *spd = [NSString stringWithFormat:@"%g", speed];
NSString *crd = [NSString stringWithFormat:@"%g", coordinates];
NSString *drc = [NSString stringWithFormat:@"%g", direction];
NSString *acc = [NSString stringWithFormat:@"%g", accuracy];
NSLog(@"Speed: %@", spd);
NSLog(@"Coordinates: %@", crd);
NSLog(@"Direction: %@", drc);
NSLog(@"Accuracy: %@", acc);
Speedometer.text = spd;
CoordinatesLabel.text = crd;
DirectionLabel.text = drc;
AccuracyLabel.text = acc;
DescriptionLabel.text = desc;
}
答案 0 :(得分:0)
您不应该设置计时器。您只需实现位置管理器委托方法。如果有更新,您将被告知。
您最大的问题是您使用变量speed
,coordinates
,direction
和accuracy
。你永远不会把它们放在任何地方(至少你发布的任何代码)。
实施locationManager:didUpdateLocations:
和/或locationManager:didUpdateToLocation:fromLocation:
方法。这些将通过更新的位置信息进行调用。使用这些来更新您的speed
和其他ivars。
编辑:另一个建议。不要使用字符串格式来格式化要显示给用户的数字。请改用NSNumberFormatter
。这样,根据用户的语言环境正确格式化数字。