Erreur d'logging CLLocation: méthode de mutation envoyée à un object immuable

J'ai lu les autres questions connexes, mais je suis coincé.

J'essaye de sauver le dernier endroit connu dans une plist pour l'usage postérieur.

Voici le message d'erreur que je reçois:

* Terminaison de l'application due à une exception non interceptée 'NSInternalInconsistencyException', raison: '- [__ NSCFDictionary setObject: forKey:]: méthode de mutation envoyée à un object immuable'

Voici mon code:

var plist = NSDictionary(contentsOfFile: NSBundle.mainBundle().pathForResource("Config", ofType: "plist")) var dataToStore = NSKeyedArchiver.archivedDataWithRootObject(lastKnownLocation) plist.setValue(dataToStore, forKey: "location") 

Le "lastKnownLocation" var est un CLLocation. La touche "localization" dans le plist est de type "data". Quelqu'un pourrait-il m'aider s'il vous plaît et laissez-moi savoir comment faire cela (ou comment ils le font s'il y a une meilleure approche)? Je vous remercie

Vous devez changer le NSDictionary en NSMutableDictionary .

 var path = NSBundle.mainBundle().pathForResource("Config", ofType: "plist") var plist: NSMutableDictionary = NSDictionary(contentsOfFile: path).mutableCopy() as NSMutableDictionary 
 plist.setValue(dataToStore, forKey: "location") 

Vous ne pouvez pas appeler setValue sur un NSDictionary car il s'agit d'une méthode de mutation et NSDictionary est immuable.

 var plist = NSDictionary(contentsOfFile: NSBundle.mainBundle().pathForResource("Config", ofType: "plist")) 

Modifiez NSDictionary dans ceci à NSMutableDictionary .