Hay un método que me puede reemplazar en mis clases personalizadas, de modo que cuando

      NSLog(@"%@", myObject) 

se llama, se imprimirá los campos (o lo que sea que consideremos importante) de mi objeto? Supongo que estoy buscando el Objetivo-C equivalente de Java toString().

5 Comentarios

  1. 247

    Es el description método de instancia, declaró como:

    - (NSString *)description

    He aquí un ejemplo de implementación (gracias a grahamparks):

    - (NSString *)description {
       return [NSString stringWithFormat: @"Photo: Name=%@ Author=%@", name, author];
    }
    • Nota si está utilizando CoreData, el description propiedad se reservados …y le brindará información de depuración! En ese caso tendrás que venir para arriba con su propio nombre de método.
    • Es debugDescription también reservado? Aunque creo que DebugDescription se supone para ser utilizado por un depurador como LLDB.
  2. 35

    Agregar esto a la @implementation de la Foto de la clase:

    - (NSString *)description {
       return [NSString stringWithFormat:@"Photo: Name=%@ Author=%@",name,author];
    }
  3. 24

    Puede reemplazar el método de descripción de NSObject:

    - (NSString *)description

    Sobre el tema de registro recomiendo este blog para una mejor registro en Objective-C.

    • No es este un método estático? Me gustaría que este para operar sobre los objetos en lugar de la clase. Por ejemplo, si tengo una «Foto» de la clase, con los campos «nombre» y «autor», me gustaría NSLog para imprimir los campos a medida que se le asigna en el objeto.
    • Sí – bien visto – he pulsado la tecla equivocada. Claramente me debe prestar más atención cuando la prueba de lectura de mis respuestas. Afortunadamente alguien tenía sus ojos en la pelota 🙂
  4. 13

    Hay dos funciones que puede utilizar.

    - (NSString*)description

    Este se mostrará cuando usted pone su objeto como, I. E. un parámetro para NSLog. La otra descripción de la función es:

    - (NSString*)debugDescription

    Este será llamado cuando usted hace po anInstanceOfYourClass en la depuración de la ventana de comandos. Si la clase no tiene un debugDescription función, a continuación, sólo description será llamado.

    Nota que la clase base NSObject tiene description implementado, pero es bastante escueto: sólo se muestra la dirección del objeto. Esta es la razón por la que me recomienda implementar description en cualquier clase que se desea obtener información de usted, especialmente si el uso de la description método en el código. Si usted hace uso de description en el código, me sugieren implementar debugDescription así, también haciendo debugDescription más detallado.

  5. 1

    Esta salida será de las voces disponibles:

        NSLog((@"speechVoices:%", [[AVSpeechSynthesisVoice speechVoices] description] ));

Dejar respuesta

Please enter your comment!
Please enter your name here