2012-06-14 12 views
9

कोर डेटा का उपयोग करके मैं कुछ डेटा प्राप्त करना चाहता हूं। मेरा मॉडल कुछ सार तत्वों का उपयोग करता है, संलग्न चित्र देखें, जहां क्वांटिफाइडइंजेंटेंट एक सार वर्ग है। मैं संघटक इकाइयों को लाने के लिए चाहता हूं जिनमें कम से कम एक पकाने की विधि त्वरित सामग्री है, लेकिन बीच में क्वांटिफाइडइंजेंटेंट है, जो एक अमूर्त वर्ग है।मैं एनएसपीडिकेट में एक सार तत्व के वर्ग प्रकार को कैसे जान सकता हूं?

मैं यह कैसे कर सकता हूं, मैं एनएसपी्रेडिकेट के अंदर एक अमूर्त वर्ग के वास्तविक प्रकार का परीक्षण कैसे कर सकता हूं? कोई विचार या सुझाव?

enter image description here

केवल सुराग मैंने पाया था: How can you reference child entity name in a predicate for a fetch request of the parent entity?

मेरी QuantifiedIngredient में कोई कस्टम गुण काम करेंगे पता करने के लिए अगर यह एक RecipeQuantifiedIngredient है? उदाहरण के लिए है RecipeQuantifiedIngredient?

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

उत्तर

1

मैं तो यहाँ CoreData बात में इस अनुवाद करने के लिए समय लेने के लिए नहीं करना चाहती एसक्यूएल में मेरे विचार है। यह अनिवार्य रूप से निकिता के झंडे का उपयोग करने का सुझाव है, सिवाय इसके कि 'ध्वज' एक संपत्ति का अस्तित्व है। मुझे नहीं पता कि GroceryQuantifiedIngredients का सामना करते समय CoreData प्रतिक्रिया करेगा कि recipe नहीं है, मुझे लगता है कि केवीओ एक अपवाद फेंक देगा। के रूप में एक वर्ग को जोड़ने के लिए तुम इतनी बोल्ड हो सकता है:

@interface GroceryQuantifiedIngredients (KVOHack) 
-(id)recipe; 
@end 

@implementation GroceryQuantifiedIngredients (KVOHack) 
-(id) recipe { return nil; } 
@end 

इस कोर्स की आवश्यकता होगी CoreData सभी quantifiedIngredients की गणना करने में, लेकिन मुझे लगता है यह बहुत वैसे भी करना होगा, और एक return nil छोटे कोड में अनुकूलन करना चाहिए। दूसरा विचार यह है कि क्या आपके शेष कोड पर इसका बुरा असर होगा; आपको वह कॉल करना होगा।

एक और विचार जो रूप में मैं इस खत्म मन में पॉप इस तरह कुछ करने के लिए है (मैं वास्तव में ढीला मेरी छद्म कोड के साथ हो रही है अब):

SELECT * FROM quantifiedIngredients WHERE [i respondsToSelector:@selector(recipe)]; 

देखें कि मैं क्या मतलब है? मैं भूल जाता हूं कि कोरडाटा आपको किसी प्रकार के कर्सर के साथ खेलने के लिए अनुमति देता है या भविष्य में काम करने के दौरान टिंगिंगबोबर्स, अगर ऐसा लगता है कि यह आपकी सबसे अच्छी शर्त है। वैसे भी यह रविवार की दोपहर है ताकि पाठक के लिए अभ्यास के रूप में सामान छोड़ा जा सके।

+1 एक अच्छे प्रश्न के लिए +1।

+0

समस्या यह है कि एसक्यूएल इकाई-संबंध मॉडल का उपयोग करता है, जहां कोई विरासत या कई से अधिक संबंध नहीं हैं। इसलिए, एसक्यूएल स्तर पर काम करने का कोई मतलब नहीं है, क्योंकि कोर डेटा ऑब्जेक्ट मॉडल का उपयोग करता है (विरासत और कई से कई रिश्तों के साथ)।तो, आप क्या कहते हैं कि यह सी ++ में एक प्रोग्राम बनाने जैसा है और असेंबलर में कुछ संशोधन करता है (बिल्कुल इतना भारी नहीं)। – Ricardo

+0

उत्तर देने के बारे में आप क्या कहते हैं ToSelector जो मैं ढूंढ रहा हूं, ऐसा लगता है कि कुछ कॉल क्लासनाम है, लेकिन यह एसक्यूएल perstistent स्टोर के साथ काम नहीं करता है, हालांकि यह दूसरों के साथ काम करता है। यह उत्सुक है। कक्षा नाम के अलावा या जवाब देने के लिए, चयन करने के बारे में क्या? मैंने एक हफ्ते पहले ऐप्पल को एक ईमेल भेजा और उन्होंने मुझे बताया कि उन्हें इसके बारे में शोध करना है (यह एक भुगतान प्रश्न है)। – Ricardo

+0

आपके पास जवाब नहीं है, लेकिन आपने जो कहा वह बहुत दिलचस्प है। बहुत बहुत धन्यवाद। – Ricardo

2

RecipeQuantifiedIngredient में आवश्यक है, तो आप ingredient.recipe पर कोई चेक लाने की कोशिश कर सकते हैं। मुझे लगता है, यह काम करेगा।

कस्टम संपत्ति, ध्वज के प्रकार में, आपके लिए भी काम करेगी। जब भी आप recipeQuantifiedIngredient जोड़ते या हटाते हैं तो आपको इसे सेट और अनसेट करने की आवश्यकता होगी।

SELECT * FROM quantifiedIngredients WHERE recipe <> NULL 

या कुछ इस तरह:

+0

वास्तविक सवाल अगर एनएसपी्रेडिकेट से विरासत का सामना करना संभव है। मैंने पहले ही झंडा जोड़ने के बारे में सोचा है, लेकिन मॉडलिंग के दृष्टिकोण से, यह एक बुरा समाधान है, हालांकि एक कामकाज हो सकता है। फिर भी धन्यवाद। – Ricardo

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