2010-08-06 9 views
7

काम नहीं करता मैं विशेषता के रूप में एक NSMutableArray के साथ एक NSManagedObject है:NSMutableArray कोर डेटा = कार्यों के साथ संग्रहीत है, लेकिन सरणी बदलने के बाद

@interface MyObject : NSManagedObject 
{ 
} 

@property (nonatomic, retain) id a1; 

डाटा मॉडल यह Transformable के रूप में घोषित किया जाता है। मैंने वैल्यू ट्रांसफार्मर फ़ील्ड छोड़ा है जैसे कि यह डिफ़ॉल्ट (हल्के भूरे रंग में) NSKeyedUnarchiveFromData के साथ है।

a1 theObject के हिस्से के रूप में बनाया जाता है:

MyObject *theObject = [NSEntityDescription insertNewObjectForEntityForName:@"MyObject" inManagedObjectContext: myManagedObjectContext]; 

और प्रारंभ:

a1 = [[NSMutableArray alloc] init]; 

वस्तुओं [a1 insertObject:[NSNumber numberWithInt:0] atIndex: 0 ];

साथ a1 लिए जोड़ रहे हैं तो मैं वह सब के बाद संदर्भ बचाने के। संदर्भ को लोड करना ए 1 में संग्रहीत सभी तत्व सहेजे और लोड किए गए हैं। ALL WORKS WELL!

लेकिन अब जब 1 ए चेंज, उदाहरण के लिए ए 1 में एक और तत्व जोड़कर या 1 के भीतर किसी तत्व को बदलकर और संदर्भ को सहेजा जा रहा है और वापस लोड किया जा रहा है, तो ए 1 की सामग्री अनचाहे है (यह ठीक है जैसा कि पहले था सभी परिवर्तन हुए)। CHANGES DON'T WORK!

वैसे, ऐप चल रहा है, ए 1 में सभी बदलाव A1 में संग्रहीत हैं।

कृपया, क्या आप मदद कर सकते हैं - यहां क्या हो रहा है?

आपकी मदद के लिए धन्यवाद बहुत कुछ!

उत्तर

20

आपके ऐरे के अंदर परिवर्तन काम नहीं करेगा क्योंकि कोर डेटा सरणी में नहीं देख सकता है।

संक्षिप्त उत्तर यह मत करो। कोर डेटा में किसी सरणी (या उस मामले के लिए शब्दकोश) को स्टोर करने का कोई कारण नहीं है।

कोर डेटा में एक नई इकाई बनाएं और एक रिश्ता बनाएं। अगर आदेश महत्वपूर्ण है, तो बच्चे की तालिका में ऑर्डर विशेषता दें।

बाइनरी ऑब्जेक्ट्स के रूप में सरणी को स्टोर न करें।

+0

... इस बीच मैंने कुछ नई चीजों की कोशिश की, जैसे कि एक ब्रांड नई सरणी को दोबारा बनाना, पुराने व्यक्ति को नए और बदले में बदलना ... और !! मैं पूरी तरह से आपकी सिफारिश को रेखांकित कर सकता हूं: ऐसा मत करो। तो मैंने जो कुछ कहा वह ठीक से समाप्त हो गया - हालांकि - यह उन मामलों में अक्षम है जहां कुछ संख्याएं हैं - सेट के साथ इन सभी का प्रतिनिधित्व करते हैं (जहां सभी वस्तुओं को कृत्रिम क्रम-विशेषता होना चाहिए) वास्तव में है एक अच्छा दृष्टिकोण नहीं है। मैं खुद से पूछता हूं, यह सब इतने लंबे समय तक कैसे जीवित रह सकता है - ऐसे कई अन्य हैं जिन्हें सरणी स्टोर करने की ज़रूरत है। धन्यवाद! – user387184

+0

यह अक्षम नहीं है क्योंकि आपको उन नंबरों को ऑब्जेक्ट में किसी भी सरणी में स्टोर करने के लिए उन्हें चालू करने की आवश्यकता है। इसके अतिरिक्त, जब आप उन नंबरों पर खोज करने में सक्षम होने के अतिरिक्त लाभों पर विचार करते हैं, तो उन नंबरों पर फ़िल्टर करें, आदि। रिश्ते की मामूली लागत लाभ की तुलना में तुच्छ है। किसी सरणी या शब्दकोश को संग्रहीत करने की तुलना में किसी इकाई की लागत शून्य के बराबर होती है। –

+4

+1 कभी-कभी सवाल का जवाब, "मैं यह कैसे कर सकता हूं," है "ऐसा मत करो।" – TechZen

संबंधित मुद्दे