[NSCFString stringValue]: sélecteur non reconnu envoyé à l'instance
Je suis en utilisant ce code de requête de base de données et renvoie la valeur de la clé, je stocke la valeur comme ceci :
NSString *newName= @"test";
[newShot setValue:newName forKey:@"shotNumber"];
et j'ai une requête comme ceci :
NSManagedObject *mo = [items objectAtIndex:0]; //assuming that array is not empty
NSString *value = [[mo valueForKey:@"shotNumber"] stringValue];
NSLog(@"Value : %@",value);
Je suis plante avec ce message :
[NSCFString stringValue]: unrecognized sélecteur envoyé à l'instance,
personne ne sait où qui serait venue ?
source d'informationauteur Finger twist
Vous devez vous connecter pour publier un commentaire.
newName
(@"test"
) est déjà un NSString. Il n'est pas nécessaire d'appeler-stringValue
pour la convertir en une chaîne de caractères.[mo valueForKey: @"shotNumber"]
retourne une chaîne etNSString
(dontNSCFString
est un détail d'implémentation) ne pas mettre en œuvre unstringValue
méthode.Étant donné que
NSNumber
ne mettre en œuvrestringValue
je parie que vous mettez unNSString
enmo
quand vous pensiez que vous avez été de mettre dans unNSNumber
.La valeur de la clé
@"shotNumber"
est probablement de typeNSString
qui est juste un wrapper pourNSCFString
. Ce que vous devez faire, est, au lieu destringValue
utilisez ledescription
méthode.Je me suis souvent ajouter une catégorie pour les NSString à gérer:
Vous pouvez ajouter une catégorie similaire à d'autres classes que vous voulez répondre de cette façon.
Notez que vous pouvez également obtenir ce problème si vous essayez d'accéder à une chaîne de propriété sur un objet que vous pense est autre chose, mais c'est en fait une chaîne de caractères.
Dans mon cas, je pensais que mon Hydratation objet était en fait une hydratation, mais la vérification de sa classe via
isKindOfClass
j'ai trouvé que c'était un NSString et réalisé que j'avais tort de voter pour elle comme une Hydratation objet et que mon problème menti en aval de la chaîne.