Vergleichen Sie NSDictionaries, die NSStrings enthalten

8

Ich habe zwei NSDictionaries mit NSStrings . Um diese beiden Wörterbücher zu vergleichen, verwende ich isEqualToDictionary: method. Die Dokumentation zu isEqualToDictionary: sagt

"Zwei Wörterbücher haben den gleichen Inhalt, wenn sie jeweils die gleiche Anzahl von Einträgen enthalten, und die entsprechenden Wertobjekte in jedem Wörterbuch erfüllen für einen gegebenen Schlüssel den Wert isEqual: test."

Meine Strings werden also mit isEqual: method verglichen.

Die Frage ist:
Wie funktioniert isEqual: für NSString ?

Verwendet es isEqual: von NSObject ? Ich habe gelesen, dass isEqual von NSObject nur Adressen vergleicht, indem == verwendet wird. Um diese Idee zu beweisen oder zu widerlegen, habe ich ein Beispiel geschrieben:

%Vor%

Der result ist YES , die Adressen von str1 und str2 sind jedoch unterschiedlich.
Also, entweder verwendet es nicht isEqual: von NSObject (was dann?), oder NSObject 's isEqual: macht etwas komplizierter, als nur die Gleichheit der Adressen zu überprüfen.

Weiß jemand, wie es wirklich funktioniert?

    
Anastasia 19.07.2013, 23:45
quelle

3 Antworten

10

NSString überschreibt isEqual: , um Zeichenfolgen richtig zu vergleichen. Daher ist es völlig in Ordnung, Wörterbücher auf diese Weise zu vergleichen.

    
cobbal 19.07.2013, 23:47
quelle
5

isEqualToDictionary vergleicht jedes Objekt mit isEqual.

In meinem Fall funktioniert es nicht mit NSString-Objekt in meinem Wörterbuch. Also habe ich einen sehr einfachen Workaround gemacht. Ich vergleiche die Beschreibung beider Wörterbücher. Dies funktioniert mit Wörterbüchern, die NSString und NSNumber enthalten, und mit allen Objekten, die eine Beschreibungsmethode enthalten.

%Vor%     
Sam 18.03.2014 10:15
quelle
1

Vergleichen Sie wörtliche Beschreibungen von Wörterbüchern. Ich verwende es in Komponententests.

%Vor%     
Geri 04.05.2014 20:21
quelle