Как правильно отправить изменяемую строку в NSTextField? - PullRequest
0 голосов
/ 23 апреля 2010

Итак, у меня есть весь этот код, который я отлаживал, и кажется, что все в порядке. Я создал изменяемую строку и по какой-то причине не могу отобразить ее на своем ярлыке. отладчик говорит

"2010-04-22 22: 50: 26.126 Фибоначчи [24836: 10b] *** - [NSTextField setString:]: нераспознанный селектор, отправленный экземпляру 0x130150"

Что с этим не так? Когда я просто отправляю строку в NSLog, все получается нормально.

вот весь мой код, любая помощь будет оценена. «elementNum» - это поле со списком, а «display» - метка. Спасибо

 #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


`

1 Ответ

2 голосов
/ 23 апреля 2010

Посмотрите на сообщение об ошибке, которое вы получаете:

-[NSTextField setString:]: unrecognized selector sent to instance 0x130150"

Это тебе кое-что говорит. В частности, у NSTextField нет метода -setString:, и попытка его вызова не удастся.

Это ваша подсказка, чтобы посмотреть на документы для NSTextField. Когда вы это сделаете, вы увидите, что нет методов для установки строкового значения. Тем не менее, документы также показывают, что NSTextField наследуется от NSControl, который имеет метод -setStringValue:.

Итак, вам нужно позвонить -setStringValue:, чтобы установить значение NSTextField.

[display setStringValue:numbers];

Обратите внимание, что в вашем коде в настоящее время вы пропускаете строковый объект numbers. Вы создали его с помощью -alloc, поэтому вы несете ответственность за его выпуск.

Вместо этого вы должны создать его, используя [NSMutableString stringWithString:@"1, 1,"], который будет возвращать автоматически выпущенный объект, а также инициализировать его в том же сообщении.

...