¿Cómo se envía la cadena mutable a la NSTextField correctamente?
-
01-10-2019 - |
Pregunta
Así que tengo todo el código que he depurado y parece estar bien. Hice una cadena mutable y por alguna razón no puedo conseguir que se muestre en mi sello. el depurador dice
"2010-04-22 22: 50: 26.126 Fibonacci [24836: 10b] *** - [NSTextField setString:]: selector no reconocido enviado a la instancia 0x130150"
¿Qué hay de malo en esto? Cuando acabo de enviar la cadena a NSLog, que salga bien.
Esto es todo mi código, cualquier ayuda se agradece. "ElementNum" es un cuadro combinado y "pantalla" es una etiqueta. Gracias
#import "Controller.h"
@implementation Controller
- (IBAction)computeNumber:(id)sender {
int x = 1;
int y = 1;
NSMutableString *numbers = [[NSMutableString alloc] init];
[numbers setString:@"1, 1,"];
int num = [[elementNum objectValueOfSelectedItem]intValue];
int count = 1;
while (count<=num) {
int z = y;
y+=x;
x=z;
[numbers appendString:[NSString stringWithFormat:@" %d,", y]];
count++;
}
[display setString:numbers];
NSLog(numbers);
}
@end
`
Solución
Mira el mensaje de error que está recibiendo:
-[NSTextField setString:]: unrecognized selector sent to instance 0x130150"
Esto le está diciendo algo. Específicamente, que NSTextField
no tiene un método -setString:
y tratando de llamar se producirá un error.
Esta es su señal para vistazo a la documentación para NSTextField
. Al hacerlo, se verá que no hay métodos para establecer el valor de cadena. Sin embargo, los documentos también muestran que hereda NSTextField
de NSControl
, que tiene un método -setStringValue:
.
Por lo tanto, es necesario llamar a -setStringValue:
para establecer el valor de un NSTextField
.
[display setStringValue:numbers];
Tenga en cuenta que en el código en la actualidad, se filtra la del objeto de cadena numbers
. Lo creó utilizando -alloc
, por lo que es responsable de la liberación de la misma.
En su lugar, debe crearlo utilizando [NSMutableString stringWithString:@"1, 1,"]
, que devolverá un objeto autoreleased, así como la inicialización en el mismo mensaje.