Come faccio a verificare che la chiave nel dizionario sia uguale alla stringa nel parametro method? nel codice sottostante, dictobj è l'oggetto NSMutableDictionary e per ogni chiave in dictobj ho bisogno di confrontarmi con la stringa. Come ottenere questo? Dovrei digitare typecase su NSString ??Controllo di uguaglianza in Objective-C
risposta
Quando si utilizza l'operatore ==
, si confrontano i valori del puntatore. Questo funzionerà solo quando gli oggetti che stai confrontando sono esattamente lo stesso oggetto, allo stesso indirizzo di memoria. Ad esempio, il codice restituirà These objects are different
perché anche se le stringhe sono le stesse, sono memorizzati in luoghi diversi in memoria:
NSString* foo = @"Foo";
NSString* bar = [NSString stringWithFormat:@"%@",foo];
if(foo == bar)
NSLog(@"These objects are the same");
else
NSLog(@"These objects are different");
Quando si confrontano le stringhe, di solito si vuole confrontare il contenuto testuale delle stringhe, piuttosto che i loro indicatori, quindi dovresti il metodo -isEqualToString:
di NSString
. Questo codice restituirà These strings are the same
perché mette a confronto il valore degli oggetti stringa piuttosto che i loro valori di puntatore:
NSString* foo = @"Foo";
NSString* bar = [NSString stringWithFormat:@"%@",foo];
if([foo isEqualToString:bar])
NSLog(@"These strings are the same");
else
NSLog(@"These string are different");
Per confrontare arbitraria Objective-C oggetti si dovrebbe utilizzare il metodo di isEqual:
più generale di NSObject
. -isEqualToString:
è una versione ottimizzata di -isEqual:
da utilizzare quando si sa che entrambi gli oggetti sono oggetti NSString
.
- (void)CheckKeyWithString:(NSString *)string
{
//foreach key in NSMutableDictionary
for(id key in dictobj)
{
//Check if key is equal to string
if([key isEqual:string])
{
//do some operation
}
}
}
- 1. Controllo di uguaglianza C#
- 2. controllo di uguaglianza breve in F #?
- 3. controllo uguaglianza oggetto di riferimento utilizzando == (in Java)
- 4. Implementare protocollo ObjectiveC in rapida
- 5. XUnit Asserzione per il controllo di uguaglianza degli oggetti
- 6. ObjectiveC blocca l'equivalente Java
- 7. Come dividere newline da NSString in ObjectiveC
- 8. uguaglianza strutturale in F #
- 9. Uguaglianza puntatore in Haskell?
- 10. uguaglianza in javascript
- 11. Test di uguaglianza a NSNull
- 12. Oggetto uguaglianza in dattiloscritto
- 13. Uguaglianza di istanza dell'interfaccia funzionale in java
- 14. Test di uguaglianza vettorizzati
- 15. Uguaglianza/disuguaglianza di array
- 16. Uguaglianza GetHashCode
- 17. Perché un controllo Null causa un vincolo di uguaglianza in F #?
- 18. Record uguaglianza in collezioni generici
- 19. confronto Float (uguaglianza) in CoreGraphics
- 20. Uguaglianza personalizzata in Clojure distinta
- 21. uguaglianza Funzione/ordinare in Erlang
- 22. Mappe e record di uguaglianza in Clojure
- 23. capire l'operatore di uguaglianza javascript
- 24. Uguaglianza nei tipi di riferimento
- 25. Differenza tra NSLog e printf per ObjectiveC
- 26. Questa riga di Underscore.js esegue il controllo di uguaglianza effettivamente necessario?
- 27. Posso inserire un ObjectiveC @selector in un NSDictionary?
- 28. Come implementare il bridging senza pedaggio in ObjectiveC/C?
- 29. Uguaglianza bit array
- 30. uguaglianza stringa bash
superbo .. grazie mille Rob .. ha funzionato :) – suse