¿Cómo anular el método de descripción de un objeto e imprimirlo?
Frecuentes
Visto 3,726 veces
1
Necesito anular el description
método para devolver el estado interno del objeto (en otras palabras, volcar todos los valores en una sola línea de texto).
En mi modelo (clase) tengo
Tarea.h
#import <Foundation/Foundation.h>
@interface Homework : NSObject
@property (nonatomic, strong) NSString *className;
@property (nonatomic, strong) NSString *assignmentTitle;
@end
tarea.m
-(NSString *)description
{
return [NSString stringWithFormat:@" %@, %@", self.className, self.assignmentTitle];
}
Creé un objeto en mi ViewController
@property (nonatomic, strong) Homework *homeworkAssignment;
Y trato de imprimirlo así
NSLog(self.homeworkAssignment.description);
Pero parece que no funciona, la salida imprime una coma ",". ¿Estoy formateando el NSLog
¿equivocado? ¿Anulé el método correctamente? Esta es mi primera aplicación (además de "Hello World").
2 Respuestas
1
Su código funciona bien, incluso puede simplemente NSLog así:
NSLog(@"%@", self.homeworkAssignment);
que regresa
2013-09-29 23:56:50.375 test[2769:a0b] (null), (null)
Intente asignar valores a su nombre de clase y título de asignación, para que no devuelva un valor nulo :)
Respondido el 29 de Septiembre de 13 a las 22:09
Lea la pregunta - no regresa (null)
. - rmady
Bueno, copié/pegué su código y probé un proyecto nuevo y fresco, eso es lo que me devolvió: Ticko
Pero no es lo que estaba obteniendo el OP. La diferencia es que nunca establece ningún valor para las dos propiedades (de ahí el (null)
salida) mientras que el OP los había configurado en cadenas vacías (por eso solo tiene una coma y nada más). - rmady
0
Todo el código parece correcto con respecto a la implementación de description
y el registro. Dado que la salida solo muestra una coma, significa que sus dos propiedades contienen cadenas vacías. si fueran nil
el formato de cadena los mostraría como (null)
.
Hay una diferencia entre un nil
puntero y una referencia a la cadena vacía (@""
).
Respondido el 29 de Septiembre de 13 a las 23:09
Funciona ahora, pero recibo una advertencia cuando hago NSLog(self.homeworkAssignment.description); Eso dice (la cadena de formato no es una cadena literal: potencialmente insegura). ¿Sabes cómo podría deshacerme de esto? - Mike
cambiar su NSLog
a la forma en que "Ticko" lo tiene en su respuesta. - rmady
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas objective-c nslog nsobject or haz tu propia pregunta.
"Parece que no funciona", ¿qué hace en su lugar? - Carl Veazey
La salida imprime una coma, - Mike
entonces muy probablemente
self.className
yself.assignmentTitle
ambos contienen cadenas vacías. - rmaddy¿Imprimiría (nulo) si la cadena estuviera vacía? - Mike
No, eso si es
nil
. No imprime nada si es una cadena vacía. ¿Dónde asignas a laclassName
yassignmentTitle
propiedades? - Carl Veazey