I get a Data argument not used by format string
error when I run the following code:
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
NSString *colour = ([colourArray objectAtIndex:row]);
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:(colour) forKey:@"colour"];
NSLog(@"NSString =", colour);
NSLog(@"NSUserDefaults =", [defaults objectForKey:@"colour"]);
}
I get the error on both NSLog
lines. Also, here is what the log says:
2011-10-25 09:01:50.260 Random[35636:b303] NSString =
2011-10-25 09:01:50.260 Random[35636:b303] NSUserDefaults =
Thank you, Arthur
Is problematic
Should be
The format specifier in this case is the
%@
which is used to print anobject
. To print numbers you'd use something like%d
. See complete documentation here.Answer from @debuggerman is absolutely correct. But you can improve your code if you use
[defaults setObject:colour forKey:@"colour”];
instead of[defaults setObject:(colour) forKey:@"colour"];
Note that I removed the parentheses for object
colour
.