2012-01-26 7 views
24

¿Cómo escribir el método de descripción adecuado para una clase?¿Cómo escribir el método de descripción adecuado para una clase?

he implementado

- (NSString *)description { 
    NSString *descriptionString = [NSString stringWithFormat:@"Name: %@ \n Address: %@ \n", self.name, self.address]; 
    return descriptionString; 

} 

cosa evrey está bien si llamo a la descripción de mi objeto. Pero si tengo una matriz de objetos y llamo descripción en la que me sale:

"Nombre: Alex \ n Dirección: alguna dirección \ n",

Lo que me gustaría conseguir es

"Nombre: Alex

dirección: alguna dirección"

+1

tendrá que bucle sobre los elementos y llamar 'description' en cada uno. La descripción del array está formateada, lo que puede provocar un cortocircuito en algunas cosas como "\ n", para mantener el formato coherente. –

+1

ver [http://stackoverflow.com/a/1828689/971401](http://stackoverflow.com/a/1828689/971401). Las respuestas probablemente te pueden ayudar. –

Respuesta

12

Excavo un poco más en los marcos de iOS y he observado que el comportamiento predeterminado de la descripción sdk de iOS no es colocar "\ n" sino ";".

Ejemplo:

UIFont *font = [UIFont systemFontOfSize:18]; 
    NSLog(@"FontDescription:%@",[font description]); 

    NSMutableArray *fontsArray = [NSMutableArray arrayWithCapacity:0]; 
    for(int index = 0; index < 10; index++) { 
     [fontsArray addObject:font]; 
    } 
    NSLog(@"FontsArrayDescription:%@",[fontsArray description]); 

El apagada es:

FontDescription: font-family: "Helvetica"; font-weight: normal; estilo de fuente: normal; font-size: 18px

FontsArrayDescription :(

"<UICFFont: 0x6e2d8b0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 18px", 
"<UICFFont: 0x6e2d8b0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 18px", 
"<UICFFont: 0x6e2d8b0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 18px", 
"<UICFFont: 0x6e2d8b0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 18px", 
"<UICFFont: 0x6e2d8b0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 18px",  
"<UICFFont: 0x6e2d8b0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 18px", 
"<UICFFont: 0x6e2d8b0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 18px", 
"<UICFFont: 0x6e2d8b0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 18px", 
"<UICFFont: 0x6e2d8b0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 18px", 
"<UICFFont: 0x6e2d8b0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 18px" 

)

Así que han decidido utilizar el mismo enfoque con mi clase.

- (NSString *)description { 
    NSString *descriptionString = [NSString stringWithFormat:@"Name: %@; Address: %@;", self.name, self.address]; 
    return descriptionString; 

} 

Y la opción de venta a cabo será:

"Nombre: Alex; Dirección: alguna dirección;"

Para el objeto en sí.

objecsArrayDescription :(

"Name:Alex; Address: some address;", 
"Name:Alex; Address: some address;", 
"Name:Alex; Address: some address;", 
"Name:Alex; Address: some address;", 
"Name:Alex; Address: some address;", 
"Name:Alex; Address: some address;", 
"Name:Alex; Address: some address;", 
"Name:Alex; Address: some address;", 
"Name:Alex; Address: some address;", 
"Name:Alex; Address: some address;" 

)

Para una matriz de objetos.

18

Además, puede utilizar un retorno de carro \r, que va a terminar en una nueva línea también (incluso en una descripción NSArray)

+0

funciona, thx mucho –

+1

¡Excelente respuesta! Aunque todavía no puedo ponerme a trabajar, terminé con "" (4 espacios). –

+0

funcionó para mí, gracias –

Cuestiones relacionadas