2012-04-22 13 views
6

मैं स्टैनफोर्ड पतन के माध्यम से 2011 आईओएस पाठ्यक्रम मेरे रास्ते काम कर रहा हूँ: http://www.stanford.edu/class/cs193p/cgi-bin/drupal/सीएस 1 9 3 पी असाइनमेंट 3, संकेत # 5 - मॉडल क्या है?

मैं # 3 काम पर हूँ: http://www.stanford.edu/class/cs193p/cgi-bin/drupal/system/files/assignments/Assignment%203_2.pdf

एक सारांश के रूप में, पूर्व कार्य और एक नियमित रूप से कैलकुलेटर का निर्माण करने के लिए कहा है अब इस असाइनमेंट हमें इस कैलकुलेटर को एक एनवी कंट्रोलर पर धक्का देने और उस कैलकुलेटर व्यू कंट्रोलर से ग्राफ़व्यू कंट्रोलर तक एक सेगू बनाने के लिए कह रहा है जो "कैलकुलेटरब्रेन" में संग्रहीत फ़ंक्शन को प्लॉट करेगा। यह कैलकुलेटरब्रेन मूल कैलक्यूलेटर व्यू कंट्रोलर के लिए मॉडल था।

संकेत # 5 इस तथ्य के बारे में बात करता रहता है कि अब ग्राफव्यू कंट्रोलर का मॉडल कैलकुलेटर व्यू कंट्रोलर के मॉडल से अलग है और मैं इसका अर्थ समझ नहीं सकता कि उसका क्या अर्थ है।

एकमात्र तरीका जिसे मैं नया एमवीसी बनाने में सक्षम हूं, ग्राफ़ व्यू कंट्रोलर के ग्राफ़ व्यू (व्यू) में प्रोटोकॉल बनाकर टाइप आईडी के "डेटासोर्स" नामक ऑब्जेक्ट के साथ प्रोटोकॉल बना रहा है। और फिर GraphViewController में:, कि प्रोटोकॉल अपनाने GraphView instantiating और डेटा स्रोत के रूप में खुद को स्थापित करने:

-(void) setGraphView:(GraphView *)graphView 
    { 
    _graphView=graphView; 
    self.graphView.dataSource=self; 
    } 

और फिर मूल CalculatoViewController में, prepareForSegue का उपयोग कर GraphViewController करने के लिए कार्यक्रम पारित करने के लिए:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if([segue.identifier isEqualToString:@"Graph"]) 
    { 
    GraphViewController *myGraphViewController = segue.destinationViewController; 
    myGraphViewController.myCalculator=self.myCalcBrain; 
    } 
} 

तो ऐसा लगता है कि ठीक काम करता है। तो अगर यह काम करता है, तो इसका मतलब है कि GraphViewController का मॉडल वास्तव में मूल कैलकुलेटर मस्तिष्क है जिसे उसने विशेष रूप से कहा था कि यह नहीं है!

मेरा मतलब यह नहीं है कि, segue के दौरान, मैं ग्राफ़व्यू कंट्रोलर कैलकुलेटर संपत्ति को कैलकुलेटर मॉडल उदाहरण को मूल कैलक्यूलेटर व्यू कंट्रोलर से आवंटित कर रहा हूं और उसके बाद ग्राफ़ व्यू कंट्रोलर से ग्राफ़ व्यू अर्थों में वाई मान वापस करने के लिए प्रोटोकॉल का उपयोग कर रहा हूं कि GraphViewController के लिए मॉडल वास्तव में केवल मूल कैलक्यूलेटर ब्रेन मॉडल है।

+0

नहीं है "इस नए दृश्य नियंत्रक के लिए मॉडल क्या है?" वास्तव में आपको क्या पता लगाने के लिए कहा जा रहा है? * क्या आपको लगता है कि यह होना चाहिए? ग्राफ़िंग व्यू कंट्रोलर किस डेटा पर काम करता है? – Caleb

+0

@ कैलेब धन्यवाद। वास्तव में भ्रमित करने वाला यह था कि मैंने ग्राफ़ व्यू क्लास में एक प्रोटोकॉल (एक विधि और एक संपत्ति के साथ) परिभाषित किया था और उसके बाद ग्राफ़ व्यू कंट्रोलर प्रोटोकॉल (और विधि) को कार्यान्वित करता था ताकि एक्स विधि के वाई मान के साथ उस विधि का जवाब हो सके। यह मुझे परेशान करता है क्योंकि मेरे दिमाग में, यह मुझे बताता है कि ग्राफवीवी के लिए मॉडल मान (वाई) का मुख्य रूप से मुख्य "कैलकुलेटरब्रेन" वर्ग से लिया गया है, जिसे उन्होंने कहा था कि यह नहीं है। शायद यह सिर्फ अर्थशास्त्र है .... क्या मैं इस पर विचार कर रहा हूं? – Spectravideo328

उत्तर

3

मुझे विश्वास है कि मॉडल "प्रोग्राम", एक एनएसएआरएआरई ऑब्जेक्ट है। यह प्रोग्राम का विवरण नहीं हो सकता है क्योंकि एनएसएसटींग को दिए गए "वाई" मान की गणना करने का कोई आसान तरीका नहीं है। आपको एनएसएसटींग को एक स्टैक (एनएसएआरएआरई) में फिर से पार्स करना होगा। इस प्रकार, क्या मॉडल को एनएसएआरएआरई/प्रोग्राम के रूप में रखना अधिक प्रत्यक्ष नहीं है?

1

मैं, आप के लिए यह जवाब देने के लिए नफरत के बाद से है कि आप क्या करने की अपेक्षा की जाती है कि क्या है, लेकिन मेरा मानना ​​है कि आप के साथ यह सोच रहे है, इसलिए यहाँ क्या वह महसूस करने के लिए/कि तुम चाहता है:

आपका मॉडल हो जाएगा मूल कैलकुलेटर से मॉडल से विरासत में प्राप्त एक नई कक्षा। यही कारण है कि वह कहता है कि आपको केवल स्क्रैच से दृश्य और नियंत्रक बनाने की आवश्यकता होगी। आपको एक मॉडल क्लास भी बनाना होगा, लेकिन पुराना कैल्क मॉडल में बहुत से आवश्यक कोड पहले से मौजूद हैं, इसलिए आप इसे केवल प्राप्त करते हैं और आवश्यक अतिरिक्त कार्यक्षमता जोड़ते हैं।

उम्मीद है कि आप उन पाठ्यक्रमों का उपयोग कर रहे हैं, यह देखकर खुशी और खुशी करते हैं। वे एक महान मुफ्त उपकरण हैं!

+0

आप विरासत मॉडल में किस तरह की add'l कार्यक्षमता जोड़ देंगे। जोड़ने के लिए वास्तव में कुछ भी नहीं है। ग्राफ़ व्यू एक्स के माध्यम से पुनरावृत्ति कर रहा है और ... से पूछ रहा है और वाई मान वापस ले रहा है।और चूंकि दृश्य और मॉडल एक दूसरे से बात नहीं कर सकते हैं, यह मुझे बताता है कि आप एक कैल्क मस्तिष्क (विरासत मॉडल से) को तुरंत चालू करने के लिए ग्राफ़वीवी सेट अप करने का सुझाव देते हैं लेकिन फिर भी शीर्ष कैलक ऑब्जेक्ट को शीर्ष स्तर के एमवीसी के माध्यम से पारित किया जाता है। यह सिर्फ इतना ही जटिल लगता है कि मॉडल सिर्फ @Matt के रूप में सूत्र है। मुझे आशा है कि हम यहां कुछ और प्रतिक्रिया प्राप्त कर सकते हैं। धन्यवाद – Spectravideo328

1

जब मैं उस असाइनमेंट कर रहा था तब भी मैंने इस प्रश्न के साथ थोड़ा संघर्ष किया। मैं निष्कर्ष (सही या गलत तरीके से) आया था कि मॉडल सिर्फ एक सूत्र है - जो कि आपके द्वारा आने वाले निष्कर्ष जैसा लगता है, जो कि कैलकुलेटर मस्तिष्क वर्ग नहीं होने पर, इससे बहुत निकटता से संबंधित है!

संपादित करें:

मैं सिर्फ वापस चला गया और (मैं फ़्लिकर काम पर वर्तमान में हूँ, इसलिए एक समय में इसे देखा नहीं किया है)

खोज रहे हैं मेरी कैलकुलेटर कार्यक्रम देखा है बुनियादी कैलकुलेटर पर, मॉडल एक "calculatorbrain" वस्तु

काम के संकेत में

था यह कहते

इस शेष भाग मत हो रोलर का मॉडल आपके कैलक्यूलेटर व्यू कंट्रोलर के मॉडल से उलझन में है। वे भिन्न हैं। और इसे अधिक मत सोचो। आपका नया कंट्रोलर मॉडल हाथ में है!

ग्राफ़व्यू नियंत्रक का मॉडल I एक प्रोग्राम है। कैलकुलेटरब्रेन में परिभाषित कार्यक्रम के रूप में - कैलकुलेटरब्रेन की बजाय संचालन (एनएसएआरएआरई) का एक ढेर। मैंने ग्राफ्यू कंट्रोलर में सीगू के माध्यम से वर्तमान कार्यक्रम को पारित किया है।

मेरे लिए यह संकेत के विवरण में फिट होना प्रतीत होता है - जब आप ग्राफ पर जाते हैं तो प्रोग्राम हाथ में है, लेकिन यह कैलकुलेटर के मॉडल के रूप में समान नहीं है।

संकेत यह नहीं कहता कि यह मॉडल से संबंधित नहीं है।

लेकिन मैं आईओएस एन 00 बी भी थोड़ा सा हूं, इसलिए यह सिर्फ मेरा लेना है!

1

मॉडल सिर्फ "प्रोग्राम" का वर्णन करने वाला एक एनएसएसटींग होना चाहिए जिसे आप ग्राफ करने जा रहे हैं। कार्यक्रम में जैसा कि कैलकुलेटर मस्तिष्क आपको वापस देता है!

id program = [self.dataSource.brain program]; 
+0

यह इसे अधिक जटिल बना सकता है। इसके बाद आपको इसे ग्राफ़ करने में सक्षम होने के लिए एनएसएसटींग को सरणी में बदलना होगा ... – Spectravideo328

1

मेरा मॉडल "प्रोग्राम" भी था!

0

@Lee Cjin Pheow, आप सही हैं। जैसा कि मैंने इस कोर्स के माध्यम से प्रगति की है, यह और अधिक स्पष्ट हो गया है। तो मॉडल सिर्फ एक एनएसएआरएआर कार्यक्रम आयोजित कर रहा है। मुझे लगता है कि मेरा भ्रम एक एन 00 बी धारणा के कारण था, मैंने बनाया कि एमवीसी में मॉडल को अपनी कक्षा/फाइल होना चाहिए और इसलिए मॉडल श्रेणी/फ़ाइल के लिए मेरी खोज होनी चाहिए। जैसा कि मैं प्रगति कर रहा हूं, मैं देख रहा हूं कि प्रोफेसर के पास एक एमवीसी है जहां मॉडल वास्तव में केवल एक संपत्ति है जो उदाहरण के लिए नियंत्रक में बैठा है। मुझे सिर्फ अपने साधारण दिमाग में येलो को पार नहीं करना है।

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