J'ai une situation où je veux mapper une paire d'objets à un dictionnaire d'informations. Je voudrais éviter de créer un NSDictionary de NSDictionaries de NSDictionaries puisque c'est simplement confus et difficile à maintenir.Comment dois-je construire un NSDictionary avec plusieurs clés?
Par exemple, si j'ai deux classes, Foo et Bar, je veux {Foo, Bar} -> {NSDictionary}
Y at-il d'autres options que de simplement faire une classe personnalisée (juste à utiliser comme le dictionnaire key) basé sur les deux types en question? Peut-être quelque chose qui ressemble au type de paire de STL que je ne connais pas?
Dave, 2 questions. 1) Je veux allocWithZone dans copyWithZone, non? 2) L'utilisation de l'ID au lieu de NSObject *? –
nall
Si vous implémentez isEqual: vous devez absolument implémenter -hash. L'invariant est que si [a estEqual: b], alors [un hash] doit == [b hash]. – Ken
@nall (désolé, raté votre commentaire) 1: '+ alloc' est implémenté en appelant' + allocWithZone: ', donc cela ne devrait probablement pas faire la différence. 2: Il n'y a pas de réel avantage. Je préfère 'id' parce que c'est a) moins de type et b) les initialiseurs retournent 'id', pas' NSObject * '(ou une variante similaire). Vrai, vous aurez * rarement * un initialiseur qui ne retourne pas une sous-classe 'NSObject', mais ce n'est pas impossible. 'NSObject' n'est pas la seule classe racine. –