NSFetchedResultsController: एक ही कुंजी के साथ दो तरह के वर्णनकर्ता काम नहीं कर रहे हैं। एक वर्ग के लिए उतरते हैं, अन्य पंक्तियों के लिए आरोही

मैं एक tableView populating के लिए एक NSFetchedResultsController का उपयोग करें। मैं चाहता हूं कि अनुभागों को तिथि के आधार पर क्रमबद्ध किया जाए और पंक्तियों द्वारा आरोही पंक्तियों को क्रमबद्ध किया जाए। दोनों कुंजी 'सृजन' का उपयोग करते हैं और अनुभागों के अनुभाग के लिए एक क्षणिक गुण होता है, जो नाम के साथ दिनांक के लिए एक स्ट्रिंग देता है: "आज, कल, 20.11.2013, 1 9 .11.2013, ..." 'निर्माण' तिथि से बनाया गया । हालांकि, पंक्तियों को हमेशा पहले क्रम वर्णनकर्ता के क्रम में क्रमबद्ध किया जाता है। क्या यह दृष्टिकोण गलत है?

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Exercise"];
request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creation" ascending:NO],
                            [NSSortDescriptor sortDescriptorWithKey:@"creation" ascending:YES]];

self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
                                                                    managedObjectContext:self.context
                                                                      sectionNameKeyPath:@"localizedCreationDate"
                                                                               cacheName:nil];

मैं किसी भी उपलब्ध सहायता के लिए आभारी हूँ! br

अद्यतन

उपर्युक्त दृष्टिकोण काम नहीं कर सकता है। :) मैंने इसे दिन की शुरुआत के साथ एक संपत्ति के रूप में दूसरी तारीख को सहेजकर हल किया, उतरने का आदेश दिया। यह अनुभागनामकेपथ के रूप में भी प्रयोग किया जाता है। इसके अतिरिक्त, अनुभाग शीर्षलेख शीर्षक के लिए स्थानीयकृत CreationDate का उपयोग किया जाता है।

- (void)setuptFetchedResultsController
{
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"DNALoggedExercise"];
    request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDayDate" ascending:NO],
                                [NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];

    self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
                                                                        managedObjectContext:self.context
                                                                          sectionNameKeyPath:@"creationDayDate"
                                                                                   cacheName:nil];
}
0

1 उत्तर

कोड के अपने पहले भाग में, आप दो विरोधाभासी <�कोड> एनएसएसआरटीस्क्रिप्टर्स </कोड> दे रहे हैं, इसलिए केवल एक को माना जाता है, और शायद पहले।

बस सुविधा के लिए दूसरी दिनांक संपत्ति बनाकर, आप अपने डेटाबेस में डेटा डुप्लिकेशन का परिचय दे रहे हैं, यह एक बहुत अच्छा विचार नहीं है। अपने परिणामों को किसी भी क्रम में क्रमबद्ध क्यों नहीं करते हैं, और केवल cellForRowAtIndexPath या titleForHeaderInSection में विपरीत में सरणी पढ़ रहे हैं? इससे भी बेहतर, आपके विचार में एक छोटी निजी विधि क्यों नहीं है नियंत्रक जो बाद में उपयोग के लिए NSDictionary या किसी अन्य सुविधा डेटा संरचना तैयार करेगा?

0
जोड़ा
मैंने पहले से ही दृष्टिकोण की कोशिश की और पंक्तियों को डालने/हटाने के दौरान कुछ समस्याओं में भाग लिया। सब कुछ अपेक्षित के रूप में चला गया, सिवाय इसके कि tableVIew पॉप्युलेट नहीं किया गया था जब ervery पंक्ति हटा दी गई थी और एक इकाई फिर से जोड़ा गया था। लेकिन आप सही हैं। यह डेटा डुप्लिकेशन से बेहतर है और मैं फिर कोशिश करूँगा और परिणामों की रिपोर्ट करूँगा। :)
जोड़ा लेखक denrase, स्रोत