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:
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?
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%Tags und Links objective-c ios macos cocoa foundation