-1

Ainsi, la première pile question de trop-plein, mais un lecteur de longue date;)Mes paramètres LocationManager changent de retour par défaut quand il atteint didUpdateLocations

Mes paramètres LocationManager changent de retour par défaut quand il atteint didUpdateLocations. J'ai mis en place un observateur dans viewDidLoad ainsi que des valeurs par défaut comme ça. Je suis également alloc, initing, et en définissant le délégué de locationManager avant toute autre chose.

[[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]; 

Voici le settingsDidChange qui est observé et où je tente de régler la desiredAccuracy de LocationManager.

- (void)settingsDidChange:(NSNotification *)notification 
{ 
NSUserDefaults *settings = [NSUserDefaults standardUserDefaults]; 
CLLocationAccuracy desiredAccuracy = [settings doubleForKey:[SettingKeys LocationTrackingAccuracyPrefs]]; 
locationManager.desiredAccuracy = desiredAccuracy; 
} 

Dans Paramètres séparés vue, je suis en train de changer la valeur de desiredAccuracy qui semble être transportant plus jusqu'à ce qu'il arrive à didUpdateLocations. Ensuite, peu importe ce que je l'ai défini, il semble revenir (ou ne jamais changer) à "Best" comme l'exactitude désirée. Je ne suis pas sûr de ce qui me manque ici ... J'espère que vous pourrez me diriger dans la bonne direction. Merci!

+0

Essayez [[NSUserDefaults standardUserDefaults] synchronize]; après registerDefaults –

+1

Avez-vous défini un point d'arrêt dans settingsDidChange pour vous assurer qu'il est appelé? avez-vous vérifié la valeur de desiredAccuracy que vous obtenez? Avez-vous vérifié que locationManager n'est pas nul lorsque ce code est exécuté? (Mon pari est que locationManager est nul, donc votre méthode settingsDidChange ne change rien.) –

+0

@FranePoljak J'ai essayé la synchronisation - il ne semblait pas y avoir de changement. – rclee

Répondre

1

J'ai trouvé mon problème ... plus loin dans mes paramètresDidChange je réallouais mon LocationManager et cela lui faisait revenir aux paramètres par défaut. Je me sens stupide de ne pas le voir avant! Merci pour l'aide de toute façon!

locationManager = [[CLLocationManager alloc] init]; 

ARRRGGG !!!

+0

J'étais sur le point de poster que vous étiez seul à comprendre cela parce que vous ne fournissiez pas assez d'informations et qu'il y avait probablement quelques détails que vous vous trompiez. Créer une nouvelle instance du gestionnaire de localisation allait être l'une de mes suppositions. S'il vous plaît, lorsque vous posez une question, fournissez des informations claires et détaillées sur votre configuration. C'est très frustrant d'avoir à jouer 20 questions pour essayer de vous aider. –

+0

@DuncanC J'ai essayé de fournir toutes les informations que je pensais pertinentes à ce moment-là. Il se faisait tard et j'ai simplement négligé cette partie du code. Mes excuses et je vais essayer d'être plus détaillé à l'avenir. Je vous remercie. – rclee

+0

Les choses importantes sont que (a) vous avez trouvé votre problème et (b) vous avez posté à ce fil avec une réponse, afin que d'autres puissent apprendre (voté). Vous devriez accepter votre réponse. –