программирование на ios — аргумент данных не используется строкой формата

#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 .