मैं निम्नलिखित की तरह एक साधारण कोर डाटा मॉडल स्थापित करने के लिए कोशिश कर रहा हूँ के साथ संबंध:मॉडल और पॉप्युलेट कोर डाटा कई-से-अनेक विशेषता
Order(code, customer)
Book(code, title, price)
OrderBook(order_code, book_code, quantity)
कोर डाटा प्रलेखन से मुझे लगता है कि यह संभव नहीं है गुणों में जोड़ने के लिए कई से अधिक रिश्तों को मॉडल करें। इस कारण से मैंने इसे निम्नलिखित की तरह मॉडलिंग किया।
जहां:
OrderBook
को वहाँ एक एक-से-अनेक संबंधOrder
करने के लिए एक हटाने नियम कास्केड- रूप
OrderBook
साथ है एक है एक से एक रिश्ते एक हटा नियम के साथ कोई कार्रवाई
Order
से
ही Book
और OrderBook
लिए मान्य है।
पहला प्रश्न: क्या यह मॉडल मान्य है?
मान लीजिए कि मॉडल ठीक है, मैंने संबंधित NSManagedObject
सबक्लास बनाए हैं।
Book.h/.m
Order.h/.m
OrderBook.h/.m
उस ने कहा, मुझे कोर डेटा तंत्र के माध्यम से इसी डीबी को पॉप्युलेट करने की आवश्यकता है। ऐसा करने के लिए मैंने निम्नलिखित श्रेणियों को निम्न जैसे बनाया है, जहां प्रत्येक श्रेणी स्वयं को बनाने के लिए ज़िम्मेदार है (ऑब्जेक्ट encapsulation को बनाए रखने के लिए)।
+ (Book *)bookWithXMLElement:(GDataXMLElement *)xmlElement inManagedObjectContext:(NSManagedObjectContext *)context;
अब मैं एक समस्या है और मैं इसे कैसे हल करने के लिए पता नहीं है:
Book+Creation.h/.m
Order+Creation.h/.m
OrderBook+Creation.h/.m
उदाहरण के लिए Book+Creation
श्रेणी निम्नलिखित की तरह एक वर्ग विधि है।
मॉडल आबादी अलग-अलग समय पर होती है। किताबों के लिए तालिका पहले आबादी है (मैं एक एक्सएमएल फ़ाइल से किताबों की एक सूची बना रहा हूँ)। एक बार समाप्त हो जाने पर, मैं ऑर्डर और ऑर्डरबुक टेबल को पॉप्युलेट करने में सक्षम हूं। निम्नलिखित की तरह इन तालिकाओं मैं एक xml फ़ाइल का उपयोग कर रहा भर दें:
<orders>
<order>
<code>1234</code>
<book>2567</book>
<customer>299</customer>
<quantity>4</quantity>
</order>
</orders>
एक Order
प्रबंधित वस्तु मैं अपनी श्रेणी Order+Creation
में निम्न विधि बना लिया है बनाने के लिए:
+ (Order *)orderWithXMLElement:(GDataXMLElement *)xmlElement inManagedObjectContext:(NSManagedObjectContext *)context;
बन जाने के बाद वस्तु OrderBook+Creation
वर्ग विधि वर्ग से पारित हो जाता है एक OrderBook
कामयाब वस्तु बनाने के लिए:
+ (OrderBook *)orderWithXMLElement:(GDataXMLElement *)xmlElement withOrder:(Order*)order inManagedObjectContext:(NSManagedObjectContext *)context
{
OrderBook* orderBook = [NSEntityDescription insertNewObjectForEntityForName:@"OrderBook" inManagedObjectContext:context];
orderBook.order = order;
//orderBook.book = <-- how can I retrieve the book?
return orderBook;
}
क्या गुम है Book
ऑब्जेक्ट को OrderBook
ऑब्जेक्ट को असाइन करने के लिए ऑब्जेक्ट को कैसे बनाएं (या पुनर्प्राप्त करें)।
दूसरा प्रश्न: मैं Book
ऑब्जेक्ट को कैसे पुनर्प्राप्त कर सकता हूं और इसे OrderBook
पर असाइन कर सकता हूं? क्या मुझे सही ऑब्जेक्ट Book
लाने के लिए NSFetchRequest
बनाना है (जिसकी एक ही कोड xml फ़ाइल में है, उदाहरण के लिए <book>2567</book>
)? यदि हां, तो क्या fetching rquest के प्रदर्शन में सुधार करने के लिए एक तंत्र है?
याद रखें कि पुस्तक तालिका पहले ही आबादी में है।
आशा है कि यह स्पष्ट है। पहले ही, आपका बहुत धन्यवाद।
मुझे खेद है, लेकिन डाउनवोट क्यों? –
आपके वर्तमान मॉडल के साथ, यदि आपके पास कोई ऑर्डर बुक ऑब्जेक्ट है जिसमें पुस्तक और ऑर्डर विशेषता दोनों हैं, तो यदि आप पुस्तक या ऑर्डर हटाते हैं, तो ऑर्डर बुक ऑब्जेक्ट हटा दिया जाएगा। क्या तुम यही चाहते हो? – jrturton
@jrturton आपके उत्तर के लिए धन्यवाद। हाँ, यह वही है जो मैं चाहता हूं। क्या तुम्हारे पास कोई सुझाव है? –