2012-02-07 9 views
12

मैं पहले से NSFetchRequest ऑर्डर करना चाहता हूं और फिर, यदि यह नाम के उसी दिन ऑर्डर से मेल खाता है। मैं एक UIDatePicker का उपयोग तिथि पाने के लिए और कोर डाटातिथि के अनुसार NSFetchRequest को क्रमबद्ध करें और उसके बाद वर्णमाला क्रम

[self.managedObject setValue:self.datePicker.date forKey:self.keypath]; 

का उपयोग कर इसे बचाने के लिए और NSFetchRequest इस तरह क्रमबद्ध करें:

NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"day" ascending:NO]; 
NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO]; 
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor1, sortDescriptor2, nil]; 
[fetchRequest setSortDescriptors:sortDescriptors]; 

अब मेरी समस्या यह है कि यह केवल दिनांक के आधार पर और नहीं आदेश दिया जा रहा है नाम से क्योंकि UIDatePicker कोर डेटा में तारीख लेकिन तारीख भी संग्रहीत है। तो फिर भी उसी दिन, उसी दिन "नाम" द्वारा क्रमबद्ध नहीं किया गया क्योंकि समय अलग है। तो मैं कोर डेटा में केवल तारीख mm/dd/yyyy को कैसे सहेजूं और UIDatePicker से डे घंटे नहीं?

या क्या आप किसी अन्य समाधान के बारे में सोचते हैं?

+3

आपको तारीख से समय निकालना होगा। http://stackoverflow.com/questions/4187478/truncate-nsdate-objective-c –

+0

क्या आपको किसी और चीज के लिए समय की जानकारी चाहिए? यदि नहीं, तो आप कोर डेटा ऑब्जेक्ट के समय को सेट करते समय समय घटकों को 0 पर सेट कर सकते हैं। यदि आपको इसकी आवश्यकता है तो आपको एक और विशेषता जोड़नी होगी जो बिना किसी समय के घटक या yyyymmdd स्ट्रिंग के NSNate का उपयोग करती है। –

उत्तर

0

कोरडाटा NSDate का समर्थन करता है, लेकिन इसमें हमेशा समय शामिल होगा। एकमात्र चीज जिसे मैं सोच सकता हूं वह एक कस्टम, रीडोनली प्रॉपर्टी है जिसमें बिना किसी घंटे के टाइमस्टैम्प है और फिर उस संपत्ति के लिए सॉर्ट डिस्क्रिप्टर बनाएं।

5

प्रारूप दिनांक yyyyMMdd के साथ दिनांक को स्ट्रिंग में बदलने के लिए अपनी तिथि प्रकार के लिए एक तुलनित्र ब्लॉक का उपयोग करें।

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"yyyyMMdd"]; 
NSSortDescriptor *sortDescriptor1 = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:NO comparator:^NSComparisonResult(NSDate *obj1, NSDate *obj2) { 
    return [[formatter stringFromDate:obj1] compare:[formatter stringFromDate:obj2]]; 
}]; 
NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO]; 
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor1, sortDescriptor2, nil]; 
[fetchRequest setSortDescriptors:sortDescriptors]; 
संबंधित मुद्दे