Comment détecter si NSString est nulle?

J'ai un morceau de code qui détecte si un NSString est NULL, nil, etc. Cependant, il se bloque. Voici mon code:

NSArray *resultstwo = [database executeQuery:@"SELECT * FROM processes WHERE ready='yes' LIMIT 0,1"];
for (NSDictionary *rowtwo in resultstwo) {

NSString *getCaption = [rowtwo valueForKey:@"caption"];

if (getCaption == NULL) {
theCaption = @"Photo uploaded...";
} else if (getCaption == nil) {
theCaption = @"Photo uploaded...";
} else if ([getCaption isEqualToString:@""]) {
theCaption = @"Photo uploaded...";
} else if ([getCaption isEqualToString:@" "]) {
theCaption = @"Photo uploaded...";
}

}

Et voici l'erreur:

Résiliation d'application en raison de uncaught exception 'NSInvalidArgumentException', la raison: '-[NSNull isEqualToString:]: unrecognized sélecteur envoyé à l'instance 0x3eba63d4'

Je fais quelque chose de mal? Ai-je besoin de le faire d'une autre manière?

  • Quel est le type de données de rowtwo? Pourquoi êtes-vous de l'envoyer -valueForKey:?
  • Je vous laisse ce commentaire pour de plus amples référence: -valueForKey: est un KVC méthode. Dans KVC, [NSNull null] représente l'absence de valeur pour une clé donnée. Si vous utilisez un NSDictionary dans un contexte qui n'a pas besoin de KVC, utilisez -objectForKey: au lieu de cela, il sera de retour nil au lieu de [NSNull null] lorsqu'une clé donnée n'est pas présente dans le dictionnaire.
  • Voir ce Débordement de Pile question pour une discussion sur la différence entre -valueForKey: et -objectForKey:: stackoverflow.com/questions/1062183/...
  • Obtenir de l'objet de tableau renseigné par une base de données...
  • rowtwo n'est pas un tableau, sinon -valueForKey: permettrait le retour d'un autre tableau. Est-il un dictionnaire?
  • Veuillez voir mes modifications dans la façon dont je peuplées et ont utilisé un NSDictionary.
  • C'est un dictionnaire, puis. Voir mon commentaire #2 et #3.
  • Une remarque plus (ha! :-)) — on dirait que vous êtes à l'aide de certains non-Apple de classe pour récupérer les résultats d'une requête de base de données. Si une colonne est NULL (comme dans SQL NULL), cette classe a deux options lors du remplissage d'un dictionnaire: soit de ne pas inclure la touche correspondante, ou de la touche correspondante de la cartographie pour une [NSNull null] valeur. C'est à cette classe comment représenter SQL valeurs NULLES, et votre test doit tenir compte des spécificités de cette classe.
  • Vous pouvez le vérifier ma réponse stackoverflow.com/a/51626469/3378413

InformationsquelleAutor iosfreak | 2011-04-16