Bạn có cần đệ quy bao gồm sự bình đẳng của các mối quan hệ (tức là các mối quan hệ trỏ đến các điểm đến bằng với định nghĩa của bạn) không? Bạn có cần kiểm tra sự bình đẳng trên các mô hình đối tượng được quản lý không? Bạn có cần kiểm tra các giá trị không cam kết không? Giả sử câu trả lời là "không" với tất cả các, giải pháp không phải là quá khó ...
instance1
bằng instance2
theo định nghĩa của bạn nếu:
NSArray *allAttributeKeys = [[[instance1 entity] attributesByName] allKeys];
if([[instance1 entity] isEqual:[instance2 entity]]
&& [[instance1 committedValuesForKeys:allAttributeKeys] isEqual:[instance2 committedValuesForKeys:allAttributeKeys]]) {
// instance1 "==" instance2
}
Nếu câu trả lời cho bất kỳ ở trên câu hỏi là "có", giải pháp phức tạp hơn nhiều.
Caveat
Tôi không chắc những điều này là một ý tưởng tốt. Bạn có thể muốn suy nghĩ lại về thiết kế của mình nếu bạn cần sử dụng giải pháp trên. Có những cách gần như chắc chắn tốt hơn để làm những gì bạn đang cố gắng để làm điều đó không chạy nguy cơ chạy afoul của ý định của Core Data.
Nguồn
2010-02-09 05:51:35
Trong khi đây là giải pháp vững chắc, tôi nhất trí nhất với Caveat của bạn. Nếu bạn phải so sánh mọi giá trị trong một đối tượng với đối tượng khác để xem liệu bạn có đang sao chép dữ liệu hay không thì có điều gì đó sai trong thiết kế và bạn cần phải nghĩ lại nó. –