मैं एक fetch अनुरोध निष्पादित कर रहा हूं जो 2000 इकाइयों को लौटाता है। वर्तमान में, यह मेरे डिवाइस पर लगभग 20 सेकंड लेता है। इसलिए मैंने सोचा कि मैं 100 की एक लांच सीमा निर्धारित कर सकता हूं, और फिर जब उपयोगकर्ता तालिका दृश्य के अंत तक स्क्रॉल करता है, तो अगली 100 इकाइयां प्राप्त करें। इसे NSFetchRequest's
setFetchLimit
और setFetchOffset
का उपयोग करके पूरा किया जा सकता है।बैचिंग कोर डेटा फ़ेच परिणाम
हालांकि, मुझे क्या पता नहीं लगा सकता है, अगर मेरे दूसरे fetch पर जहां मैं वस्तुओं को 101-200 ला रहा हूं, तो वस्तुओं 1-100 के साथ क्या होगा? क्या मुझे प्रत्येक 100 आइटमों के लिए अलग NSFetchedResultsController
का उपयोग करना होगा, और उसके बाद एकाधिक तालिका परिणाम नियंत्रकों के आधार पर क्वेरी करने के लिए मेरी तालिका दृश्य डेटा स्रोत विधियों को कॉन्फ़िगर करना होगा? या क्या मैं किसी भी तरह से एक ही समय में 100 इकाइयों को लाने के लिए NSFetchedResultsController
का उपयोग कर सकता हूं, लेकिन प्रत्येक आगामी fetch पर, अगले 100 आइटम मूल 100 आइटम में जोड़ें?
संपादित करें:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"MessageObject" inManagedObjectContext:appDelegate.managedObjectContext];
[fetchRequest setEntity:entity];
NSPredicate *predicate= [NSPredicate predicateWithFormat:@"ANY tags.tagName==%@", currentTagObject.tagName];
[fetchRequest setPredicate:predicate];
NSSortDescriptor *sort= [[NSSortDescriptor alloc] initWithKey:@"createDate" ascending:NO selector:@selector(compare:)];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:5];
क्या आप अपना अनुरोध प्राप्त करने का अनुरोध दिखा सकते हैं? जहां तक मुझे पता है, परिणाम नियंत्रक प्राप्त किए गए हैं (और मुझे लगता है कि सरल fetch अनुरोध भी) आपके लिए ऐसा करने में दोषपूर्ण उपयोग करते हैं। यह संभव है कि आपकी "क्वेरी" को अनुकूलित किया जा सके। –
मैंने अपना कुछ कोड पोस्ट किया है। मुझे समझ में नहीं आता - फिर संस्थाओं को लाने में 20 सेकंड क्यों लगते हैं? जब मैं 100 की सीमा निर्धारित करता हूं, तो यह 1 सेकंड में आता है, लेकिन बिना सीमा के, जो 2000 इकाइयों को लाता है, इसमें 20 सेकंड लगते हैं। – Snowman