Qu'est ce qu'un NSCFDictionary?
Je suis un NSCFDictionary revint vers moi et je ne peux pas comprendre comment l'utiliser. Je sais qu'il est de type NSCFDictionary parce que j'ai imprimé la classe et il est sorti comme __NCSFDictionary. Je ne peux pas comprendre comment le faire quelque chose avec elle.
Je suis juste essayer de s'accrocher à elle pour l'instant, mais ne peut pas même obtenir que cela fonctionne:
NSDictionary *dict = [[NSURLCredentialStorage sharedCredentialStorage] allCredentials];
for(NSURLProtectionSpace key in [dict keyEnumerator])
{
NSCFDictionary *value = [dict objectForKey:key];
}
La classe de référence pour allCredentials dit sa supposée retourner un dictionnaire dont les valeurs sont aussi les dictionnaires. Mon instruction d'affectation ne fonctionne pas bien. Ai-je besoin d'une fonte d'une certaine sorte?
source d'informationauteur JPC
Vous devez vous connecter pour publier un commentaire.
NSDictionary et les autres les classes de collection sont en fait clusters de classe: plusieurs béton sous-classes classes déguisé en vertu de l'interface d'une classe unique: ils offrent tous la même fonctionnalité (parce qu'ils sont des sous-classes de la même classe — dans NSDictionary cas, cela implique les trois "des méthodes primitives"
-count
-objectForKey:
et-keyEnumerator
), mais ont différentes fonctionnement interne pour être efficace dans des situations différentes, basé sur la façon dont ils sont créés, et le type de données qu'ils peuvent stocker.NSCFDictionary est tout simplement une sous-classe concrète de NSDictionary. Voilà, votre NSDictionaries peut effectivement être NSCFDictionary cas, mais vous devez les traiter comme des instances de NSDictionary, parce que cela va vous fournir le dictionnaire-la fonctionnalité de stockage.
Maintenant, une autre raison que votre code ne fonctionne pas: NSURLProtectionSpace est une classe, vous devez l'utiliser comme un pointeur, comme ceci:
NSCFDictionary est le privé sous-classe de NSDictionary qui implémente la fonctionnalité réelle. C'est juste un NSDictionary. Juste au sujet de tout NSDictionary vous utilisez sera un NSCFDictionary sous le capot. Il n'est pas question pour vous de code. Vous pouvez le type de la variable que NSDictionary et de l'utiliser en conséquence.
J'ai un NSCFDictionary qui est en fait un NSMutableDictionary objet, je peux supprimer des éléments. Je mentionne cela pour clarifier davantage jtbandes' réponse: la NSCFDictionary objet peut être n'importe quel objet qui hérite de NSDictionary.