2011-02-27 14 views
15

लौटने पर मैं एक एनएसडीएट ऑब्जेक्ट को घंटे, मिनट और दूसरे के साथपर शुरू करने की कोशिश कर रहा हूं। मैं इसे प्राप्त करने के लिए नीचे दिए गए कोड का उपयोग कर रहा हूं, लेकिन किसी कारण से मुझे [NSDateComponents दिनांक] ]। मेरे कोड में क्या गलत है?NSDateComponents nil

NSCalendar *gregorian = [[[NSCalendar alloc] 
          initWithCalendarIdentifier:NSGregorianCalendar] autorelease]; 

NSDate *now = [[[NSDate alloc] init] autorelease]; 
NSDateComponents *nowDc = [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) 
     fromDate:now]; 
// this returns nil! 
NSDate *todayStart = [nowDc date]; 

उत्तर

34

जब आप कैलेंडर उदाहरण से घटक प्राप्त करते हैं तो NSDateComponents उदाहरण का कैलेंडर सेट नहीं होता है।

लेकिन [components date] का उपयोग करने से पहले आपको कैलेंडर सेट करना होगा, क्योंकि कैलेंडर के बिना कोई तारीख नहीं है।

तो जोड़ने के लिए [nowDc setCalendar:gregorian];

+0

ठीक कोशिश, यह उस डॉक्स में जहां कहता है? क्या एक कष्टप्रद कार्यान्वयन। – Ovesh

+2

यह स्पष्ट रूप से यह नहीं कहता है। लेकिन यह पूरे दिनांक प्रोग्रामिंग गाइड में निहित है। एनएसडीएटी (समय के रूप में बिंदु) और दिन के महीने के बीच भेद काफी महत्वपूर्ण है। इसी कारण से कोई [NSDate dateWithYear: month: date] विधि नहीं है। एक एनएससीएंडर दिन के बिना दिन और वर्ष व्यर्थ हैं। –

+0

बहुत उपयोगी, धन्यवाद! –

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