2010-04-23 58 views
0

所以我有这个代码,我已经调试,它似乎很好。我做了一个可变的字符串,出于某种原因,我无法将它显示在我的标签上。调试器说如何正确发送可变字符串到NSTextField?

“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 


` 
+0

与您的问题无关,但使用appendFormat而不是appendString。 – drawnonward 2010-04-23 04:31:45

+0

我认为你的问题有点混乱,你说'显示'是一个标签,但错误信息提到NSTextField? – 2010-04-23 04:45:42

+0

drawnonward - 谢谢。 Anders Karlsson - 这是一个NSTextField,界面生成器把它叫做标签,所以我做了。我想这很混乱,但我的不好。 – Merle 2010-04-23 05:01:34

回答

2

看看你得到错误信息:

-[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,"]创建它,它将返回一个自动释放对象,并在相同的消息中初始化它。

+0

非常感谢。我是计算机编程的新手,我一直在努力教自己可可。我在文档中查找了一些东西,但我想我应该查看NSTextField。再次感谢。 – Merle 2010-04-23 04:49:41