J'ai deux "Deux dictionnaires ont un contenu égal si elles contiennent chacune du même nombre d'entrées et, pour une clé donnée, les objets de valeur correspondants dans chaque dictionnaire satisfont à l'ISEAR: test . " p> Donc, mes chaînes sont comparées par La question est: utilise-t-il le résultat Est-ce que quelqu'un sait comment ça marche vraiment? p> p> nsdictionnaires code> contenant nstrings code>. Pour comparer ces deux dictionnaires, j'utilise isequaltoDictionardiction: code> méthode. La documentation sur isequaltodidiction: code> dit isequal: code> méthode. p>
Comment iSequal: code> fonctionne pour le nstring code>? P> isequal: code> à partir de nsobject code >?
J'ai lu que iSequal code> à partir de NsObject code> compare simplement les adresses, à l'aide de == code>.
Pour prouver ou réfuter cette idée, j'ai écrit un échantillon: p> est code> est oui code>, les adresses de STR1 code> et str2 code> sont différents cependant.
donc, soit il n'utilise pas iSequal: code> à partir de nsobject code> (quoi que?) ou NsObject code> 'S ISEQ: code> fait quelque chose de plus compliqué alors de vérifier l'égalité des adresses. P>
3 Réponses :
nstring code> remplace isequal: code> Pour comparer correctement les chaînes, vous êtes donc parfaitement amende pour comparer les dictionnaires de cette façon. P>
Merci. Y a-t-il un moyen de s'en assurer? Les en-têtes et la documentation pour Nstring ne dit rien.
J'ai trouvé cela, ce fait est mentionné dans "Programmation de l'Objective-C: le Guide de Ranch Big Nerd".
@Anastasia également, il est très indirectement mentionné dans les docs sous isequaltostring: code> qui dit qu'il est identique à code> ISEQ: code> quand les deux sont cordes, mais plus vite.
IsequaltoDictionarictionnaire compare tous les objets avec Isequal.
Dans mon cas, cela ne fonctionne pas avec l'objet Nstring dans mon dictionnaire. J'ai donc fait une solution de contournement très simple. Je comparais la description des deux dictionnaires. Cela fonctionne avec des dictionnaires contenant nstring et nsnumber et whit tous les objets contenant une méthode de description. P>
NSString *a = dictionary.description;
NSString *b = assertation.description;
BOOL test = [a isEqualToString:b];
NSDictionary code> n'est pas commandé, je pense.
Pourquoi ne pouvez-vous pas utiliser la méthode Isequaltostring? trop facile?
@Sambudda Ce n'est pas moi, c'est Nsdictionary utilise Isequal: comparer ses éléments.