2010-04-23 14 views
0

J'ai donc tout ce code que j'ai débogué et ça semble aller. J'ai fait une chaîne mutable et pour une raison quelconque, je ne peux pas l'afficher sur mon étiquette. le débogueur ditComment envoyer correctement la chaîne mutable au champ NSTextField?

"2010-04-22 22: 50: 26,126 Fibonacci [24836: 10b] *** - [NSTextField setString:]: sélecteur non reconnu envoyé à l'instance 0x130150"

Quel est le problème avec ce ? Quand je viens d'envoyer la chaîne à NSLog, ça sort très bien.

Voici tout mon code, toute aide serait appréciée. "elementNum" est un comboBox et "display" est un label. Merci

#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

Non lié à votre problème, mais utilisez appendFormat au lieu de appendString. – drawnonward

+0

Je pense que votre question est un peu confuse, vous dites que 'display' est une étiquette mais les messages d'erreur mentionnent NSTextField? –

+0

drawnonward - merci. Anders Karlsson - C'est un constructeur d'interface NSTextField qui l'appelle comme un label. Je suppose que c'est confus cependant, mon mauvais. – Merle

Répondre

2

Regard sur le message d'erreur que vous obtenez:

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

Cela vous dit quelque chose. Plus précisément, que NSTextField n'a pas une méthode -setString: et en essayant de l'appeler va échouer.

Ceci est votre repère pour regarder les docs pour NSTextField. Lorsque vous le faites, vous verrez qu'il n'y a aucune méthode pour définir la valeur de chaîne. Toutefois, les documents vous montrent également que NSTextField hérite de NSControl, qui a une méthode -setStringValue:.

Ainsi, vous devez appeler -setStringValue: pour définir la valeur d'un NSTextField.

[display setStringValue:numbers]; 

Notez que dans votre code à l'heure actuelle, vous l'objet une fuite de chaîne numbers. Vous l'avez créé en utilisant -alloc, vous êtes donc responsable de le libérer. Au lieu de cela, vous devez le créer en utilisant [NSMutableString stringWithString:@"1, 1,"], ce qui retournera un objet autoreleased, ainsi que l'initialiser dans le même message.

+0

Merci beaucoup l'homme. Je suis nouveau à la programmation informatique et j'ai essayé de m'enseigner Cocoa. J'ai regardé quelques choses dans les docs mais je suppose que j'aurais dû chercher NSTextField. Merci encore. – Merle