因此,首先堆栈溢出的问题,但很长一段时间的读者;)我的LocationManager设置变回默认,当它到达didUpdateLocations
我的LocationManager设置变回默认,当它到达didUpdateLocations。我已经在viewDidLoad中设置了一个观察者,以及像这样的一些默认值。我还要先分配,初始化,然后设置locationManager的委托。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(settingsDidChange:)
name:NSUserDefaultsDidChangeNotification
object:nil];
NSMutableDictionary *defaultsDictionary = [[NSMutableDictionary alloc] init];
[defaultsDictionary setObject:@(kCLLocationAccuracyNearestTenMeters) forKey:[SettingKeys LocationTrackingAccuracyPrefs]];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultsDictionary];
这里是正在观察settingsDidChange我所在的地方尝试设置的LocationManager的desiredAccuracy。
- (void)settingsDidChange:(NSNotification *)notification
{
NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];
CLLocationAccuracy desiredAccuracy = [settings doubleForKey:[SettingKeys LocationTrackingAccuracyPrefs]];
locationManager.desiredAccuracy = desiredAccuracy;
}
在一个单独的设置查看我改变desiredAccuracy的,这似乎是结转直至到达didUpdateLocations值。然后,无论我如何设置它似乎恢复(或从不改变)为“最佳”作为所需的准确性。我不知道我在这里错过了什么......我希望你们都能引导我走向正确的方向。谢谢!
尝试[[NSUserDefaults standardUserDefaults] synchronize];在registerDefaults –
之后您在settingsDidChange中设置了断点以确保它被调用?你有没有检查你所获得的期望的准确性的价值?你确定那个代码运行时locationManager不是零吗? (我敢打赌,locationManager是零,所以你的settingsDidChange方法实际上并没有改变任何东西。) –
@FranePoljak我尝试了同步 - 它似乎没有任何改变。 – rclee