2009-04-06 34 views
6

Estoy trabajando a través del Stanford iPhone class y no puedo entender por qué recibo una advertencia del compilador. Supongo que necesito enviar mi objeto a NSString, pero aparece un error cuando intento hacerlo. El código se ejecuta y me da el resultado esperado, pero la advertencia me molesta.Casting NSObject a NSString

NSLog(@"lowerCaseString is: %@", [object lowercaseString]); 

Esto se ejecuta con la advertencia: 'NSObject' puede no responder a '-lowerCaseString'

NSLog(@"lowerCaseString is: %@", [(NSString)object lowercaseString]); 

Esto arroja un error: la conversión al tipo no escalar solicité

Respuesta

21

Creo que esto hará lo que necesita:

NSLog(@"lowerCaseString is: %@", [(NSString *)object lowercaseString]); 

Nota Acabo de agregar un * a su segunda línea de código para hacer un puntero a NSString. ¡Espero eso ayude!

Adam

+0

Gracias Adam, tengo todos mis libros y documentos abiertos, pero no pude encontrar esta respuesta de un solo personaje en cualquier lugar. Aclamaciones. –

3

¿Por qué es objeto declarado como NSObject si se supone que debe ser un NSString? Si tiene la intención de llamar a los métodos NSString en él, declararlo como un NSString o dejarlo como un id. Entonces no obtendrás errores.

+0

Es un NSMutableArray de objetos aleatorios que debe analizarse. La salida ocurre cuando encuentra objetos NSString. Funcionó sin errores, pero me gusta eliminar las advertencias también. –

+0

Tener la variable ID de tipo en lugar de NSObject * sería mejor. Para eso está la identificación, cuando no se conoce el tipo de objeto. Eche un vistazo a http://stackoverflow.com/questions/466777 si desea más información. – Chuck

+0

+1 para promocionar el uso de id sobre NSObject * – Abizern