2010-10-10 11 views
7

Quindi, voglio mettere una variabile di istanza in un NSString come questo:NSString con grado variabile

NSString * theanswer = (@ "La risposta è% @ \ n", self.answer);

Non sono sicuro che abbia ragione o no. Ho pensato che NSString avrebbe funzionato come NSLog ma apparentemente no.

theanswer ritorna come solo la variabile di istanza senza "La risposta è"

Qualcuno mi può dire perché e come risolvere questo problema?

Grazie.

risposta

16
NSString *theAnswer = [NSString stringWithFormat:@"The answer is %@", self.answer]; 
+0

Grazie, ha funzionato. – TheAmateurProgrammer

+3

@theAmateurProgrammer: Dovresti accettare la sua risposta allora. –

0

Vorrei inoltre notare oltre a dj2 rispondere che NSLog è un metodo non un oggetto. Gli oggetti non vengono inizializzati in forma di ("param1", param2) Per il caso di NSString fai quello dj2 fatto:

NSString *theAnswer = [[NSString alloc] initWithFormat:@"The answer is %@", self.answer]; 

Dove si deve dichiarare theanswer come un puntatore NSString, perché tutti gli oggetti Objective-C sono puntatori, poi dire di nuovo A quale classe verrà assegnato (in questo caso NSString), allora dirai come inizializzarlo e in questo caso stai usando initWithFormat: per inizializzarlo.

+0

Grazie per la risposta. Voglio chiedermi che differenza farebbe se inizializzassi NSString o no? – TheAmateurProgrammer

+0

@theAmeratureProgrammer: In realtà, dopo aver posto una domanda, l'inizializzazione in questo modo non lo dealloc automaticamente, ma l'altro modo lo farà. Quindi, fai la tua scelta. –