因此,首先堆棧溢出的問題,但很長一段時間的讀者;)我的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