È necessario ricorsivamente includere l'uguaglianza delle relazioni (ad esempio, le relazioni puntano a destinazioni uguali alla definizione)? È necessario testare l'uguaglianza tra i modelli di oggetti gestiti? Hai bisogno di testare valori senza risposta? Supponendo che la risposta è "no" a tutto questo, la soluzione non è troppo difficile ...
instance1
è pari a instance2
dalla vostra definizione se:
NSArray *allAttributeKeys = [[[instance1 entity] attributesByName] allKeys];
if([[instance1 entity] isEqual:[instance2 entity]]
&& [[instance1 committedValuesForKeys:allAttributeKeys] isEqual:[instance2 committedValuesForKeys:allAttributeKeys]]) {
// instance1 "==" instance2
}
Se la risposta a una di queste le domande sono "sì", la soluzione è significativamente più complessa.
Caveat
Non sono sicuro che niente di tutto questo è una buona idea. Probabilmente vorresti ripensare il tuo design se hai bisogno di usare la soluzione di cui sopra. Ci sono quasi certamente modi migliori per fare ciò che stai cercando di fare che non rischiano di incappare nelle intenzioni di Core Data.
fonte
2010-02-09 05:51:35
Mentre questa è una soluzione solida, sono assolutamente d'accordo con il tuo avvertimento. Se devi confrontare ogni valore di un oggetto con un altro per vedere se stai duplicando i dati, allora c'è qualcosa di sbagliato nel progetto e devi ripensarlo. –