2011-10-25 5 views
5

ottengo un errore Data argument not used by format string quando si esegue il seguente codice:ios programmazione - argomento I dati non utilizzato da formato stringa

- (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"]); 

} 

ottengo l'errore su entrambe le linee NSLog. Inoltre, ecco cosa dice il registro:

2011-10-25 09:01:50.260 Random[35636:b303] NSString = 
2011-10-25 09:01:50.260 Random[35636:b303] NSUserDefaults = 

Grazie, Arthur

risposta

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

è problematico

Dovrebbe essere

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

L'identificatore di formato in questo caso è il %@ che viene utilizzato per stampare un object. Per stampare numeri devi usare qualcosa come %d. See complete documentation here.

+0

grazie mille, ha risolto il problema! – gadgetmo

0

La risposta di @debuggerman è assolutamente corretta. Ma è possibile migliorare il codice se si utilizza [defaults setObject:colour forKey:@"colour”]; anziché [defaults setObject:(colour) forKey:@"colour"];

Si noti che ho rimosso le parentesi per l'oggetto colour.

+0

grazie. L'ho cambiato. – gadgetmo