में अतिरिक्त अनुभाग जोड़ना मैं अपनी कंपनी के लिए एक छोटा आईफोन ऐप लिख रहा हूं जो एक समय में प्रत्येक कर्मचारी के लिए बुकिंग दिखाता है। मैं किसी दिए गए सप्ताह के लिए 'बुकिंग' की सूची प्राप्त करने के लिए कोर डेटा का उपयोग कर रहा हूं और सप्ताह के प्रति दिन एक अनुभाग में टूटा हुआ UITableView में उन्हें प्रदर्शित करना चाहता हूं।NSFetchedResultsController
समस्या यह है कि मुझे सप्ताह के प्रत्येक दिन के लिए 7 अनुभाग दिखाना होगा ('कोई बुकिंग' सेल दिखा रहा है जहां एक अनुभाग/दिनांक में कोई बुकिंग नहीं है)।
मैं अनुप्रयोग का स्क्रीनशॉट मिल गया है के रूप में यह खड़ा है here (खेद के रूप में मैं StackOverlow के लिए नया हूँ अभी तक छवियों पोस्ट नहीं कर सकते)
फिलहाल मैं एक 'fetchResults का उपयोग करके इस को प्राप्त करने कर रहा हूँ 'विधि है जो बुकिंग हो जाता है और उन्हें संभावित तारीखों की एक सरणी के लिए आयोजित करता है:
- (void)refetchResults {
// Drop bookings Array, replacing with new empty one
// 7 slots for 7 days each holding mutable array to recieve bookings where appropraite
self.bookings = [NSArray arrayWithObjects:[NSMutableArray array],
[NSMutableArray array], [NSMutableArray array],
[NSMutableArray array], [NSMutableArray array],
[NSMutableArray array], [NSMutableArray array], nil];
// Create the fetch request for the entity.
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Booking" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
// Limit to this weeks data
[fetchRequest setPredicate:
[NSPredicate predicateWithFormat:@"(date >= %@) && (date <= %@) && (resource == %@)",
firstDate,lastDate,resourceId]];
// Edit the sort key as appropriate.
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:YES];
NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"recId" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, sortDescriptor2, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
// Fetch records in to array
NSError *error;
NSArray *results = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
if (results == nil) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
[fetchRequest release];
[sortDescriptor release];
[sortDescriptor2 release];
[sortDescriptors release];
// Walk through records and place in bookings Array as required
for (Booking *item in results) {
// Decide on array index by difference in firstDate and booking date
int idx = (int)[[item date] timeIntervalSinceDate:firstDate]/86400;
// Add the item to the approp MutArray
[(NSMutableArray *)[bookings objectAtIndex:idx] addObject:item];
}
// Reload table
[tableView reloadData];
}
मेरे सवाल यह है: वहाँ किसी भी तरह से NSFetchedResultsController का उपयोग कर एक ही परिणाम प्राप्त करने के लिए है? किसी भी तरह मुझे NSFetchedResultsController को 7 अनुभागों के लिए, सप्ताह के प्रत्येक दिन के लिए एक प्राप्त करने की आवश्यकता होगी, उनमें से कुछ में कोई बुकिंग नहीं होनी चाहिए।
किसी भी मदद की बहुत सराहना :)
उत्तर के लिए धन्यवाद
https://github.com/timothyarmes/TAFetchedResultsController
टिम: मैं इस मुद्दे को हल करने के लिए NSFetchedResultsController का एक उपवर्ग लिखा है। जब तक मुझे कुछ याद नहीं आ रहा है, मुझे अभी भी उपयुक्त अनुभाग खोजने के लिए मैपिंग अभ्यास करने की आवश्यकता है - यह है: तालिका दृश्य अनुभाग 0 से 6 के लिए पूछेगा (उदाहरण के लिए, 1 नवंबर से 7 नवंबर तक), लेकिन NSFetchedResultsController के पास केवल हो सकता है खंड 0, 1 और 2 (प्रतिनिधित्व, शायद, 2 नवंबर, 3 नवंबर और 6 नवंबर के लिए बुकिंग)। जब भी मैं NSFetchedResultsController का निर्माण करता हूं तो मैपिंग को कैश कर सकता हूं या जब भी मैं इसे करने के लिए एक अच्छा/साफ तरीका है, तो मैं मैपिंग को कैश कर सकता हूं। – Paul80nd
आप सही हैं। खेद है कि अधिक मदद न करें। समय के साथ ही, मैं इसके साथ प्रयोग करूँगा। जानना उत्सुक है कि आप इसे कैसे हल करते हैं। – westsider
दरअसल, इस बारे में थोड़ा और सोचते हुए मुझे लगता है कि इस पल के लिए एक उपयोग योग्य कामकाज सामान्य रूप से एक NSFetchedResultsController बनाना है, लेकिन उसके बाद उस सेट के अंत में 'मैपिंग' सरणी के फ़ील्ड अनुभागों में तालिकादृश्य के अनुभागों का अनुवाद करने के लिए NSFetchedResultsController का। इसका मतलब यह होना चाहिए कि मैं परिणाम नियंत्रक (जो अच्छा है;) से ऑब्जेक्ट नोटिफिकेशन प्राप्त कर सकता है - परिणामस्वरूप नियंत्रक से जोड़े गए/हटाए गए आइटमों के लिए सूचनाएं आने पर मुझे केवल 'मैपिंग' सरणी को अपडेट करने की आवश्यकता होगी। किसी भी तरह से, अगर मुझे एक अच्छा समाधान मिल जाए तो मैं इसे यहां पोस्ट करना सुनिश्चित कर दूंगा। – Paul80nd