Obj-C - NSString que guarda todas las entradas usando los métodos currentTitle y UILabel.text

  NSString* digit                  = [sender currentTitle];

if (self.userIsInTheMiddleOfEnteringANumber){ 
    NSString* currentDisplayText = [[self display]text];
    NSString* newDisplayText     = [currentDisplayText stringByAppendingString:digit];

self.display.text                = newDisplayText; 

Intentaré explicar mi problema lo mejor que pueda. Esta línea de código aquí toma el dígito de una selección de botones, no lo guarda en la cadena "dígito". "currentDisplayText" toma el dígito que se muestra en una etiqueta. Luego, estas dos cadenas se agregan y se envían a la "pantalla" (etiqueta)

Pero también hay un botón de entrada. Lo que borra la pantalla (para que el usuario pueda ingresar un nuevo número), ¡esta es una calculadora por cierto!

- (IBAction)enterPressed{

[self.brain pushOperand:[self.display.text doubleValue]];
self.userIsInTheMiddleOfEnteringANumber = NO;

Lo que quiero es mostrar una etiqueta de "historial" que muestre todos los números ingresados. No he entendido muy bien cómo obtengo la cadena. También guardo el "historial", para no reiniciar como lo hace la pantalla. Esto podría estar mal explicado por mí, pero cualquier sugerencia es apreciada. Todavía estoy aprendiendo objetivo-c...

preguntado el 28 de julio de 12 a las 02:07

2 Respuestas

Si lo entendí correctamente, desea guardar el número después de presionar el botón Intro. Para esto, debe agregar un atributo de tipo NSMutableArray a su clase. Luego en el método haz:

- (IBAction)enterPressed {
    [myHistoryArrayAttrib addObject: self.display.text]; 

    [self.brain pushOperand:[self.display.text doubleValue]];
    self.userIsInTheMiddleOfEnteringANumber = NO;

    //after this you can clear your display
    self.display.text = nil;
}

Eso es.

Respondido 28 Jul 12, 04:07

No te entendí muy bien, pero de una cosa estoy seguro, si quieres guardar tus datos (no muy grandes), debes usar NSUserDeafult. usar - (void)setObject:(id)anObject forKey:(id)aKey;para guardar los datos.

Si desea guardar el historial, si desea guardar el último historial, puede usar - (NSString *)stringForKey:(NSString *)defaultName; para obtener la cadena que guardó. y si quieres guardar todo el historial, puedes usar - (NSArray *)arrayForKey:(NSString *)defaultName; para obtener la matriz que guarda.

dar un ej. cómo guardar una cadena

                    if([[NSUserDefaults standardUserDefaults] stringForKey:theKey] == nil)
                    {
                        NSString *defaultValue = [NSString stringWithString:theStringYouWantedSave];
                        NSDictionary *saveDict = [NSDictionary dictionaryWithObject:defaultValue forKey:theKey];
                        [[NSUserDefaults standardUserDefaults] registerDefaults:saveDict];
                    }
                    else
                    {
                        [[NSUserDefaults standardUserDefaults] setObject:theStringYouWantedSave forKey:theKey];
                    }

y ponte así

if([[NSUserDefaults standardUserDefaults] stringForKey:theKey]!=nil)
{
    yourHistoryString = [[NSUserDefaults standardUserDefaults] stringForKey:theKey];
}

Respondido 28 Jul 12, 04:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.