9

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

gadgetmo
  • 3,058
  • 8
  • 27
  • 41

2 Answers2

24
NSLog(@"NSString = ", colour);    
NSLog(@"NSUserDefaults =", [defaults objectForKey:@"colour"]);

Is problematic

Should be

NSLog(@"NSString = %@", colour);
NSLog(@"NSUserDefaults = %@", [defaults objectForKey:@"colour"]);

The format specifier in this case is the %@ which is used to print an object. To print numbers you'd use something like %d. See complete documentation here.

zakishaheen
  • 5,551
  • 1
  • 22
  • 29
0

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.

Jorge Ramos
  • 891
  • 10
  • 21