I am having trouble saving an NSMutableDictionary. I am trying to save it to NSUserDefaults, then load and change a blue, then save it again.
So I initially make it like so:
NSMutableDictionary *d = [NSMutableDictionary dictionaryWithObjectsAndKeys:
firstNameLbl, @"firstName",
lastNameLbl, @"lastName",
nil];
[[NSUserDefaults standardUserDefaults] setObject:d forKey:@"youDict"];
[[NSUserDefaults standardUserDefaults] synchronize];
Then I load it and try and change a value like this:
NSMutableDictionary *d = [[NSUserDefaults standardUserDefaults] objectForKey:@"youDict"];
[d setObject:textField.text forKey:key];
[[NSUserDefaults standardUserDefaults] setObject:d forKey:@"youDict"];
[[NSUserDefaults standardUserDefaults] synchronize];
However, this line, [d setObject:textField.text forKey:key];, causes the app to crash and I get this error:
'NSInternalInconsistencyException', reason: '-[__NSCFDictionary setObject:forKey:]: mutating method sent to immutable object'
objectForKey returns an immutable value for NSUserDefaults. To make this work replace the first line of your 2nd code block with this: