Mam dwa NSDictionaries
zawierające NSStrings
. Aby porównać te dwa słowniki, używam metody isEqualToDictionary:
. Dokumentacja na isEqualToDictionary:
mówi: "Dwa słowniki mają taką samą zawartość, jeśli każda z nich ma taką samą liczbę wpisów, a dla danego klucza odpowiadające obiekty wartości w każdym słowniku spełniają test isEqual: test."Porównaj NSDictionaries zawierające NSStrings
Więc moje struny są porównywane metodą isEqual:
.
Pytanie brzmi:
Jak działa isEqual:
dla urządzenia NSString
?
Czy używa ona isEqual:
z NSObject
? Przeczytałem, że isEqual
z NSObject
tylko porównuje adresy, używając ==
. Aby udowodnić lub obalić tę ideę Napisałem próbki:
NSString *str1 = @"sampleString";
NSString *str2 = [NSString stringWithFormat:@"%@", @"sampleString"];
BOOL result = [str1 isEqual:str2];
result
jest YES
, adresy str1
i str2
różnią się jednak.
Tak więc albo nie używa ona isEqual:
z (czym niż?), Albo NSObject
's isEqual:
robi coś bardziej skomplikowanego niż po prostu sprawdzanie równości adresów.
Czy ktoś wie, jak to działa?
Dlaczego nie można użyć metody isEqualToString? zbyt łatwe? –
@SamBudda To nie ja, to NSDictionary używa isEqual: porównywania jego elementów. – Anastasia