#objective-c #ios #xcode #uipickerview #nsuserdefaults
#objective-c #iOS #xcode #uipickerview #nsuserdefaults
Вопрос:
Я получаю Data argument not used by format string
сообщение об ошибке при запуске следующего кода:
- (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"]);
}
Я получаю ошибку в обеих NSLog
строках. Кроме того, вот что говорится в журнале:
2011-10-25 09:01:50.260 Random[35636:b303] NSString =
2011-10-25 09:01:50.260 Random[35636:b303] NSUserDefaults =
Спасибо,
Артур
Ответ №1:
NSLog(@"NSString = ", colour);
NSLog(@"NSUserDefaults =", [defaults objectForKey:@"colour"]);
Проблематично
Должно быть
NSLog(@"NSString = %@", colour);
NSLog(@"NSUserDefaults = %@", [defaults objectForKey:@"colour"]);
Спецификатором формата в этом случае является тот %@
, который используется для печати object
. Для печати чисел вы бы использовали что-то вроде %d
. Смотрите Полную документацию здесь .
Ответ №2:
Ответ от @debuggerman абсолютно правильный. Но вы можете улучшить свой код [defaults setObject:colour forKey:@"colour”];
, если вместо [defaults setObject:(colour) forKey:@"colour"];
Обратите внимание, что я удалил круглые скобки для object colour
.