2012-12-29 27 views
7

के साथ डेटा आयात करते समय डुप्लिकेट प्रविष्टियों से बचें मैं कोर डेटा संचालन को सुविधाजनक बनाने के लिए जादुई रिकॉर्ड का उपयोग कर रहा हूं। कल्पना कीजिए कि हम इस तरह json का एक सेट है, और एक कोर डाटा मॉडल में परिभाषित किया ठीक उसी:जादुई रिकॉर्ड

{ 
    "cars": [ 
     { 
      "name": "Corolla", 
      "brand": { 
       "name": "Toyota" 
      }, 
      "price": 20000 
     }, 
     { 
      "name": "Pirus", 
      "brand": { 
       "name": "Toyota" 
      }, 
      "price": 50000 
     }, 
     { 
      "name": "RAV-4", 
      "brand": { 
       "name": "Toyota" 
      }, 
      "price": 30000 
     }, 
     { 
      "name": "Golf", 
      "brand": { 
       "name": "VW" 
      }, 
      "price": 40000 
     }, 
     { 
      "name": "Polo", 
      "brand": { 
       "name": "VW" 
      }, 
      "price": 20000 
     } 
    ] 
} 

अब, अगर हम जादुई रिकार्ड सहायक विधि का उपयोग करें:

- (BOOL) MR_importValuesForKeysWithObject:(id)objectData; 

या

+ (id) MR_importFromObject:(id)data; 

इसे कार की 5 प्रविष्टियों और ब्रांड की 5 प्रविष्टियों के रूप में आयात किया जाएगा।

हालांकि, हमारे कोर डेटा मॉडल में, कार-ब्रांड संबंध कई से अधिक है, और ब्रांड का नाम विशेषता अद्वितीय होना चाहिए, इसलिए मुझे कार की 5 प्रविष्टियां और ब्रांड की 2 प्रविष्टियों की उम्मीद है (टोयोटा और वीडब्ल्यू)।

मेरा प्रश्न कोर डेटा के साथ आयात करते समय डेटा विशिष्टता को बनाए रखने का तरीका है। क्या यह कुछ ऐसा है जो मैं कोर डेटा मॉडल में परिभाषित कर सकता हूं, जैसे अद्वितीय विशेषता? या क्या मुझे जादुई रिकॉर्ड की आयात विधि को ओवरराइड करने की आवश्यकता है?

+0

क्या आपको इसके लिए उत्तर मिला? – Fogmeister

+0

मुझे पूरा यकीन है कि आपको इस समस्या को प्रोग्रामेटिक रूप से http://forums.pragprog.com/forums/90/topics/2875 पर आधारित मार्कस एस ज़रारा –

+0

http://www.cimgf.com/ के अनुसार हल करना होगा। 2012/05/2 9/आयात-डेटा-निर्मित-आसान/ऐसा प्रतीत होता है कि आप 'relatedByAttribute' कुंजी जोड़ सकते हैं और इसे उस संपत्ति पर मैप कर सकते हैं जिसे इसे एक कुंजी के रूप में माना जाना चाहिए ... – ChickensDontClap

उत्तर

6

आपको MagicalRecord को अद्वितीय पहचानकर्ता क्या कहना है। आपके मामले में आपके पास कोई अद्वितीय आईडी नहीं है, लेकिन आप शायद name विशेषता का उपयोग कर सकते हैं।

मान लें कि आप एक Brand NSManagedObject करने के लिए एक रिश्ते के साथ एक Car NSManagedObject है, तो आप उपयोगकर्ता की जानकारी शब्दकोश में Brand के रिश्ते पर name को relatedByAttribute सेट करना होगा।

एक बार जब आप इस किया है MagicalRecord विशेषता name के साथ किसी भी रिकॉर्ड देखने और उचित रिकॉर्ड का उपयोग करता है, तो एक पहले से मौजूद है, या यदि आवश्यक हो तो बना दिया जाएगा।

इसका मतलब है कि आपको श्रेणी श्रेणी के साथ महत्वपूर्ण ओवरराइड नहीं करना पड़ेगा।

अगर आपको अतिरिक्त जानकारी की आवश्यकता है तो मुझे बताएं।

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