Estoy usando NSUSerDefaults para almacenar las preferencias del usuario. Recuerdo haber leído en alguna parte que establecer las teclas como constantes es una buena idea, y estoy de acuerdo. El siguiente código es lo que tengo actualmente:Usar una NSString constante como la clave para NSUserDefaults
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:@"polygonNumberOfSides"];
He intentado cambiar esto:
@implementation Controller
NSString const *kPolygonNumberOfSides = @"polygonNumberOfSides";
-(void)savePolygonInfo {
[[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithInt:polygon.numberOfSides]
forKey:kPolygonNumberOfSides];
}
Si bien esto funciona, produce "warning: passing argument 1 of 'objectForKey:' discards qualifiers from pointer target type
". Me encanta mantener mi código libre de advertencias del compilador. ¿Cómo puedo solucionar esta advertencia?
'NSString * const foo' funciona porque' NSString' es inmutable y el puntero es inmutable por lo que nunca puede cambiar correctamente? Además, recuerdo de C++ que 'const' es implícitamente' static' (una optimización del compilador) por lo que no es necesario llamarlo. ¿Es eso cierto aquí también? – Ternary