2010-04-23 72 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