-1

因此,首先堆棧溢出的問題,但很長一段時間的讀者;)我的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值。然後,無論我如何設置它似乎恢復(或從不改變)爲「最佳」作爲所需的準確性。我不知道我在這裏錯過了什麼......我希望你們都能引導我走向正確的方向。謝謝!

+0

嘗試[[NSUserDefaults standardUserDefaults] synchronize];在registerDefaults –

+1

之後您在settingsDidChange中設置了斷點以確保它被調用?你有沒有檢查你所獲得的期望的準確性的價值?你確定那個代碼運行時locationManager不是零嗎? (我敢打賭,locationManager是零,所以你的settingsDidChange方法實際上並沒有改變任何東西。) –

+0

@FranePoljak我嘗試了同步 - 它似乎沒有任何改變。 – rclee

回答

1

想通了我的問題...在我的settingsDidChange進一步下來我重新分配我的LocationManager,並導致它恢復到默認設置。我以前沒有看到它,我感到很蠢!無論如何感謝您的幫助!

locationManager = [[CLLocationManager alloc] init]; 

ARRRGGG!

+0

我剛剛發佈的信息是,你自己解決這個問題是因爲你沒有提供足夠的信息,並且可能有一些細節你錯了。創建位置管理器的新實例將成爲我的猜想之一。請在您提出問題時提供有關您設置的清晰和詳細的信息。爲了試圖幫助你,必須播放20個問題是非常令人沮喪的。 –

+0

@DuncanC我試圖提供我當時認爲相關的所有信息。它已經遲到了,我只是忽略了那部分代碼。我的歉意,我會盡力在未來更詳細。謝謝。 – rclee

+0

重要的事情是(a)你發現你的問題和(b)你回到這個線程的答案,所以其他人可以學習(投票)。你應該接受你的答案。 –