[__NSDictionaryI setObject:forKey:]: unrecognized sélecteur envoyé à l'instance
Je suis en train d'ajouter "dateTime" de Mon dictionnaire défini comme suit:
Symptom Ranking: {
5111ef19253b4a9150000000 = 1;
5111f029253b4add4e000000 = 1;
5111f036253b4a123d000001 = 1;
5111f045253b4a404f000000 = 1;
}
NSLog(@"date selected: %@", [[self.datePicker date] description])
[self.results setObject:[[self.datePicker date] description] forKey:@"dateTime"];
Application se bloque et j'obtiens ceci:
Symptom Tracker[43134:c07] -[__NSDictionaryI setObject:forKey:]: unrecognized selector sent to instance 0x7603990
2013-02-06 08:15:58.741 Symptom Tracker[43134:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSDictionaryI setObject:forKey:]: unrecognized selector sent to instance 0x7603990'
*** First throw call stack:
(0x171b012 0x1428e7e 0x17a64bd 0x170abbc 0x170a94e 0x521e 0x143c705 0x373920 0x3738b8 0x434671 0x434bcf 0x433d38 0x3a333f 0x3a3552 0x3813aa 0x372cf8 0x2652df9 0x2652ad0 0x1690bf5 0x1690962 0x16c1bb6 0x16c0f44 0x16c0e1b 0x26517e3 0x2651668 0x37065c 0x25dd 0x2505)
OriginalL'auteur jini | 2013-02-06
Vous devez vous connecter pour publier un commentaire.
Votre dictionnaire est immuable, c'est une
NSDictionary
et pas unNSMutableDictionary
. Corriger cela, et ça marchera très bien.OriginalL'auteur
Je suis tombé sur cette erreur une fois, quand j'ai accidentellement déclaré
copy
propriété comme suit:quand je l'ai fait dans mon
init
:J'ai effectivement eu un immuable dictionnaire. Je me serais attendu que l'appel
copy
sur un objet mutable me donnerait aussi un objet mutable, mais apparemment pas. De toute façon, la suppression de lacopy
mot-clé (que je n'ai jamais voulu être là en premier lieu) a résolu le problème.J'ai rencontré exactement le même problème. Merci!!
OriginalL'auteur bugloaf
Vous devez utiliser un
NSMutableDictionary
- la trace de la pile de montre que vous êtes à l'aide d'un__NSDictionaryI
,(NSDictionary
) qui est immuableOriginalL'auteur Rich Tolley
Comme la tête du classement réponse vous a dit que vous devez utiliser
NSMutableDictionary
au lieu deNSDictionary
. Et dans le cas où vous souhaitez utiliser des littéraux, utilisezmutableCopy
comme:De sorte que vous pouvez ré-assigner les touches à l'aide de
OriginalL'auteur superarts.org
Ce problème se produit la plupart du temps lorsque nous sommes face à un web-service de réponse parce que les données reçues est immuable. Lorsque vous essayez de modifier des données immuables de l'application sera certainement crash.
J'espère que l'extrait de code suivant va nous aider.
OriginalL'auteur Ravi Raja Jangid
Dans Mon cas, j'ai eu un code swift qui retourne une valeur dans [AnyHashable:AnyObject] format, j'ai dû convertir en NSMutableDictionary,
NSMutableDictionary *logDict = [[NSMutableDictionary alloc]initWithDictionary:[[AnalyticsManager shared]addCommonPropertiesWithProperties:logDict]];
Où, comme [[AnalyticsManager partagé]addCommonPropertiesWithProperties:logDict] cette partie renvoie à [AnyHashable:AnyObject] format. Qui a résolu mon problème.
OriginalL'auteur vinodonkar