программирование ios - аргумент данных не используется форматной строкой - PullRequest
7 голосов
/ 25 октября 2011

Я получаю ошибку 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 =

Спасибо, Артур

Ответы [ 2 ]

20 голосов
/ 25 октября 2011
NSLog(@"NSString = ", colour);    
NSLog(@"NSUserDefaults =", [defaults objectForKey:@"colour"]);

Проблематично

Должно быть

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

Спецификатором формата в этом случае является %@, который используется для печати object.Для печати номеров вы должны использовать что-то вроде %d. См. Полную документацию здесь.

0 голосов
/ 25 октября 2011

Ответ от @debuggerman абсолютно правильный. Но вы можете улучшить свой код, если вы используете [defaults setObject:colour forKey:@"colour”]; вместо [defaults setObject:(colour) forKey:@"colour"];

Обратите внимание, что я удалил скобки для объекта colour.

...