Seul le crash d'iOS 7 [NSNull intValue]: sélecteur non reconnu envoyé à l'instance
Je veux obtenir les données JSON service. Seulement iOS 7 version crash lorsque obtenir des données de valeur JSON.
Il retourne du JSON service ci-dessous:
{
voteAverageRating = 0;
voteCount = 0;
}
Mon code
int voteCount = [listDic objectForKey:@"voteCount"] intValue] ;
_LB_voteNumber.text = [NSString stringWithFormat:@"(%i)",voteCount];
Son travail pour iOS 5,5.1,6.0,6.1 mais il crash version iOS7. Il a donné cette erreur:
0x00098117 _mh_execute_header [NSNull intValue]: unrecognized sélecteur
envoyé à l'instance
Puis j'ai changé mon code ci-dessous qui;
NSString *voteCount = [listDic objectForKey:@"voteCount"] ;
_LB_voteNumber.text = [NSString stringWithFormat:@"(%@)",voteCount];
Quand exécute ce code. Il s'est écrasé à nouveau qu'iOS 7 version. Il a donné cette erreur:
0x00098117 _mh_execute_header [NSNull longueur]: unrecognized sélecteur
envoyé à l'instance
Comment puis-je résoudre ce problème ?
source d'informationauteur SukruK
Vous devez vous connecter pour publier un commentaire.
Mettre une case avant d'accéder à la valeur de JSON comme,
Raison de la vérification, les objets de collection comme
NSDictionary
ne permettent pas de valeurs ànil
d'où ils sont stockés comme nulle. En passantintValue
à unNSNull
ne fonctionnera pas, car il ne reconnaîtra pas ce sélecteur.Espère que ça aide!
Comme les autres l'ont dit, JSON null sera désérialisé à
NSNull
. Contrairement ànil
Vous ne pouvez pas envoyer (la plupart) des messages àNSNull
.Une solution consiste à ajouter une mise en œuvre de intValue sur NSNull via la catégorie:
Maintenant votre code fonctionne depuis l'envoi de
-intValue
àNSNull
sera de retour0
Une autre option: Vous pouvez également ajouter un "IfNullThenNil" à la catégorie NSObject...
Maintenant, votre code devient:
Il suffit d'ajouter un appel à
-ifNullThenNil
où que vous les valeurs de l'accès à partir d'un objet JSON.Pour moi, c'est travaillé
J'espère que cela aide quelqu'un. Si vous avez besoin d'aide faites le moi savoir.
C'est tout à fait normal. JSON pouvez envoyer des valeurs null pour votre application. Si c'est le cas, c'est fait intentionnellement par le serveur, et il s'attend à vous de le gérer. Déterminer quel est le comportement correct est lorsqu'une valeur null est reçu. Puis, quand vous obtenez un objet qui pourrait être une valeur null, vérifiez
Le vrai problème n'est pas que votre application se bloque, mais que votre application ne gère pas les données JSON qu'il est censé gérer.