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
.