2013-07-13 5 views
5

मान लीजिए कि मेरे पास AFIncrementalStore का उपयोग कर कोर डेटा मॉडल है, और मेरे पास उस मॉडल की ऑब्जेक्ट्स की एक सूची पुनर्प्राप्त करने के लिए एकाधिक आरईएसटी एपीआई अंतराल हैं। मैं तो जैसे AFHTTPClient में -requestForFetchRequest:withContext: ओवरराइड कर सकते हैं:AFIncrementalStore में एक प्रकार की इकाई लाने के लिए मेरे पास एकाधिक URL अनुरोध कैसे हो सकते हैं?

- (NSURLRequest *)requestForFetchRequest:(NSFetchRequest *)fetchRequest 
         withContext:(NSManagedObjectContext *)context { 

    NSMutableURLRequest *mutableURLRequest = nil; 
    if ([fetchRequest.entityName isEqualToString:@"Post"]) { 
     mutableURLRequest = [self requestWithMethod:@"GET" path:@"/posts/foo" parameters:nil]; 
    } 
    return mutableURLRequest; 
} 

इस स्निपेट में, मैं /posts/foo पर Post वस्तुओं को पुनः प्राप्त है, लेकिन मैं भी /posts/bar से एक और सेट को पुनः प्राप्त करने की जरूरत है।

मैं यह कैसे कर सकता हूं? एकमात्र समाधान जो मैं देखता हूं वह दो मॉडल बनाना है: foo और bar के लिए एक, लेकिन खुद को दोहराना लंगड़ा है, और कई और एपीआई एंडपॉइंट्स हो सकते हैं जो मेरे लिए Post ऑब्जेक्ट्स प्राप्त करते हैं जिन्हें मुझे समर्थन करने की आवश्यकता होगी। क्या कोई और दृष्टिकोण है जिसे मैं याद कर रहा हूं?

+1

आप कैसे निर्णय लेते हैं कि आप '/ posts/foo' या'/posts/bar' चाहते हैं? उदाहरण के लिए, वे अलग-अलग उपयोगकर्ताओं द्वारा पोस्ट ऑब्जेक्ट्स हैं? क्या आप वर्तमान में 'foo' या' bar' पोस्ट ढूंढ रहे हैं या नहीं, यह निर्धारित करने के लिए 'fetchRequest' का निरीक्षण कर सकते हैं? –

+0

मेरे मामले में, जिस एपीआई के साथ मैं बात कर रहा हूं वह एक स्क्रीन है जहां मुझे एक टेबल दृश्य में सूची में फू और बार पोस्ट दोनों का अनुरोध करने की आवश्यकता है। मेरे पोस्ट मॉडल में एक संपत्ति है जो दर्शाती है कि यह किस प्रकार का है, तो शायद मैं 'fetchRequest.predicate.predicateFormat' देख सकता हूं और उस तरह से निर्धारित कर सकता हूं? – greenisus

+0

हाँ, यह आपके मामले में लगता है, आपको 'fetchRequest' को' entityName' को देखने के बजाय अधिक बारीकी से निरीक्षण करने की आवश्यकता है। आप अपने डेटा मॉडल के आधार पर 'fetchRequest.propertiesToFetch' या संभवतः अन्य चीजों को भी देख सकते हैं। आपको अभी भी दो अनुरोध भेजने की आवश्यकता होगी, इसलिए बस सुनिश्चित करें कि यह अंतर बता सकता है। –

उत्तर

2

आपको entityName को देखने से अधिक निकटता से fetchRequest का निरीक्षण करने की आवश्यकता है। आप अपने डेटा मॉडल के आधार पर fetchRequest.propertiesToFetch या संभवतः अन्य चीजों को भी देख सकते हैं। आपको अभी भी दो अनुरोध भेजने की आवश्यकता होगी, इसलिए बस सुनिश्चित करें कि आपका AFNetworking सबक्लास अंतर बता सकता है।

इसके अलावा: ऐसा लगता है कि आपकी requestForFetchRequest:withContext: विधि वास्तव में बड़ी हो सकती है। आप एक अधिक सामान्य पैटर्न पर विचार करना चाहेंगे जिसमें आपको अपना NSManagedObject सबक्लास प्राप्त हो, और पूछें कि एक fetch अनुरोध वापस करने के लिए।

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

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