मान लीजिए कि मेरे पास 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
ऑब्जेक्ट्स प्राप्त करते हैं जिन्हें मुझे समर्थन करने की आवश्यकता होगी। क्या कोई और दृष्टिकोण है जिसे मैं याद कर रहा हूं?
आप कैसे निर्णय लेते हैं कि आप '/ posts/foo' या'/posts/bar' चाहते हैं? उदाहरण के लिए, वे अलग-अलग उपयोगकर्ताओं द्वारा पोस्ट ऑब्जेक्ट्स हैं? क्या आप वर्तमान में 'foo' या' bar' पोस्ट ढूंढ रहे हैं या नहीं, यह निर्धारित करने के लिए 'fetchRequest' का निरीक्षण कर सकते हैं? –
मेरे मामले में, जिस एपीआई के साथ मैं बात कर रहा हूं वह एक स्क्रीन है जहां मुझे एक टेबल दृश्य में सूची में फू और बार पोस्ट दोनों का अनुरोध करने की आवश्यकता है। मेरे पोस्ट मॉडल में एक संपत्ति है जो दर्शाती है कि यह किस प्रकार का है, तो शायद मैं 'fetchRequest.predicate.predicateFormat' देख सकता हूं और उस तरह से निर्धारित कर सकता हूं? – greenisus
हाँ, यह आपके मामले में लगता है, आपको 'fetchRequest' को' entityName' को देखने के बजाय अधिक बारीकी से निरीक्षण करने की आवश्यकता है। आप अपने डेटा मॉडल के आधार पर 'fetchRequest.propertiesToFetch' या संभवतः अन्य चीजों को भी देख सकते हैं। आपको अभी भी दो अनुरोध भेजने की आवश्यकता होगी, इसलिए बस सुनिश्चित करें कि यह अंतर बता सकता है। –