2009-07-03 24 views
7

से UITableView शीर्षलेख सेट करना मेरे पास NSFetchedResultsController है जो NSManagedObjectContext से ऑब्जेक्ट प्राप्त कर रहा है। मैं UITableView को पॉप्युलेट करने के लिए परिणामों का उपयोग कर रहा हूं।NSFetchedResultsController

मैं इन दो प्रकार के वर्णनकर्ताओं के साथ फ़िल्टर कर रहा हूं।

NSSortDescriptor *lastOpened = 
    [[NSSortDescriptor alloc] initWithKey:@"lastOpened" ascending:NO]; 

NSSortDescriptor *titleDescriptor = 
    [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES]; 

और जब मैं NSFetchedResultsController बनाने के लिए, मैं sectionNameKeyPath:@"lastOpened" के माध्यम से वर्गों को सॉर्ट।

अभी मेरे अनुभाग मानक प्रारूप प्रदर्शित करते हैं जैसे 200 9-07-02 20:51:27 -0400 और चूंकि एक ही समय में कोई भी दो खोला नहीं जा सकता है, वे सभी अद्वितीय हैं। मुझे उन्हें पूरे दिन जैसे समय/समय की सीमा को कवर करने की आवश्यकता है, और मानव-पठनीय रूप में होना चाहिए। कुछ गुरुवार, 2 जुलाई की तरह कुछ।

धन्यवाद!


संपादित करें:

यह सब एक UITableViewController के अंदर है। यहां कुछ और कोड है।

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 
    // Display the dates as section headings. 
    return [[[fetchedResultsController sections] objectAtIndex:section] name]; 
} 



- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

    id <NSFetchedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections] objectAtIndex:section]; 
    return [sectionInfo numberOfObjects]; 
} 
+0

क्या आप तालिका को पॉप्युलेट करने के लिए बाइंडिंग का उपयोग कर रहे हैं या आपने UITableView के लिए डेटास्रोत लिखा है? –

+0

प्रश्नकर्ता आईफोन के लिए विकास कर रहा है, इसलिए यह बाइंडिंग नहीं हो सकता है, क्योंकि यह कोको टच में मौजूद नहीं है। http://developer.apple.com/IPhone/library/documentation/ Miscellaneous/Conceptual/iPhoneOSTechOverview/PortingfromCocoa/PortingfromCocoa.html –

+0

आपको अपने प्राप्त परिणाम नियंत्रक, btw पर 'NSPredicates' सेट करके परिणामों को फ़िल्टर करना चाहिए।आप अभी भी एक से अधिक तरीकों को सॉर्ट कर सकते हैं, लेकिन यदि आप केवल कुछ ऑब्जेक्ट्स दिखाना चाहते हैं, जहां कुछ "गुण सत्य हैं" (यानी एक अनुमान मिलता है) तो एनएसपीडिकेटेट्स का उपयोग करें। – jbrennan

उत्तर

12

मैंने स्वरूपित दिनांक स्ट्रिंग प्राप्त करने के लिए day को NSManagedObject सबक्लास में एक नई संपत्ति जोड़ना समाप्त कर दिया।

@property (nonatomic, readonly) NSString * day; 
@property (nonatomic, retain) NSDateFormatter * dateFormatter 

तारीख को संश्लेषित करें। @ सिंथेसाइज तिथिफॉर्मेटर;

मैं जागने में डेट फॉर्मेटर को जागृत करता हूं FromFetch और awakeFromInsert।

self.dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[self.dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 

day के लिए एक्सेसर।

- (NSString *)day { 
    NSDate *date = self.startDate; 
    return [self.dateFormatter stringFromDate:date]; 
} 

मैं तो day को देखने के लिए मेरी अनुभाग नाम मुख्यपथ सेट; आपको अपने सॉर्ट डिस्क्रिप्टर में कोई भी बदलाव करने की आवश्यकता नहीं है।

0

मैं एसडीके के उस क्षेत्र में अभी तक खुदाई करने के लिए एक मौका नहीं मिला है (मेरे काम तो iPhone सामान मेरे शौक समय में है, के साथ सी # है), लेकिन मैं क्या बता सकता से आप चाहेंगे अन्य init का उपयोग करने के लिए, विशेष रूप से initWithKey: आरोही: चयनकर्ता: और चयनकर्ता के लिए आप अपनी तुलना विधि में एक चयनकर्ता पारित कर सकते हैं जो केवल वर्ष/माह/दिन की तुलना में समय की अनदेखी करेगा।

यहाँ संदर्भ के लिए यूआरएल है: iPhone Library Documentation

आशा इस मदद करता है!

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