2009-04-06 4 views
6

Je travaille sur le Stanford iPhone class et je n'arrive pas à comprendre pourquoi je reçois un avertissement de compilateur. Je suppose que j'ai besoin de jeter mon objet à NSString, mais j'obtiens une erreur quand j'essaie de le faire. Le code s'exécute et me donne la sortie attendue, mais l'avertissement me dérange.Coulée d'un objet NSObject à NSString

NSLog(@"lowerCaseString is: %@", [object lowercaseString]); 

Cela va avec l'avertissement: 'NSObject' ne peut pas répondre à '-lowerCaseString'

NSLog(@"lowerCaseString is: %@", [(NSString)object lowercaseString]); 

Cela jette une erreur: la conversion du type non scalaire prié de lui

Répondre

21

Je crois que ce fera ce dont vous avez besoin:

NSLog(@"lowerCaseString is: %@", [(NSString *)object lowercaseString]); 

Remarque Je viens d'ajouter un * à votre deuxième ligne de code à faire un pointeur vers NSString. J'espère que cela aide!

Adam

+0

Merci Adam, j'ai tous mes livres et documents ouverts, mais je n'ai pas pu trouver ce seul caractère réponse nulle part. À votre santé. –

3

Pourquoi est-objet déclaré comme NSObject si elle est censé être un NSString? Si vous avez l'intention d'appeler des méthodes NSString, déclarez-les comme NSString ou laissez-les en tant qu'ID. Alors vous n'obtiendrez pas d'erreurs.

+0

Il s'agit d'un NSMutableArray d'objets aléatoires qui doit être analysé. La sortie se produit lorsqu'il rencontre des objets NSString. Il a couru sans erreurs, mais j'aime aussi éliminer les avertissements. –

+0

Avoir la variable typée id plutôt que NSObject * serait mieux. C'est ce que l'ID est pour - quand vous ne connaissez pas le type de l'objet. Jetez un oeil à http://stackoverflow.com/questions/466777 si vous voulez plus d'informations. – Chuck

+0

+1 pour promouvoir l'utilisation de l'ID sur NSObject * – Abizern