क्या आपको दोबारा संबंधों की समानता शामिल करने की आवश्यकता है (यानी संबंध आपकी परिभाषा के बराबर गंतव्यों को इंगित करते हैं)? क्या आपको प्रबंधित ऑब्जेक्ट मॉडल में समानता का परीक्षण करने की आवश्यकता है? क्या आपको असामान्य मूल्यों का परीक्षण करने की आवश्यकता है? जवाब मान लिया जाये कि "नहीं" इन सभी के लिए है, समाधान भी कठिन नहीं है ...
instance1
अपनी परिभाषा द्वारा instance2
के बराबर है यदि:
NSArray *allAttributeKeys = [[[instance1 entity] attributesByName] allKeys];
if([[instance1 entity] isEqual:[instance2 entity]]
&& [[instance1 committedValuesForKeys:allAttributeKeys] isEqual:[instance2 committedValuesForKeys:allAttributeKeys]]) {
// instance1 "==" instance2
}
यदि उपरोक्त में से किसी को जवाब प्रश्न "हां" है, समाधान काफी जटिल है।
चेतावनी
मुझे यकीन है कि इस में से किसी एक अच्छा विचार है नहीं कर रहा हूँ। यदि आप ऊपर दिए गए समाधान का उपयोग करने की आवश्यकता है तो शायद आप अपने डिजाइन पर पुनर्विचार करना चाहते हैं। आप जो करने की कोशिश कर रहे हैं, उसे करने के लिए लगभग निश्चित रूप से बेहतर तरीके हैं जो कोर डेटा के इरादों को दूर करने का जोखिम नहीं चलाते हैं।
स्रोत
2010-02-09 05:51:35
हालांकि यह एक ठोस समाधान है, मैं सबसे अधिक दृढ़ता से आपकी चेतावनी से सहमत हूं। यदि आप डेटा को डुप्लिकेट कर रहे हैं तो यह देखने के लिए कि आप प्रत्येक ऑब्जेक्ट को एक ऑब्जेक्ट में दूसरे ऑब्जेक्ट की तुलना कर रहे हैं तो डिज़ाइन में कुछ गड़बड़ है और आपको इसे फिर से सोचने की आवश्यकता है। –