2011-03-19 8 views
6

मेरे पास दिनांक क्षेत्र वाला एक इकाई है और मैं किसी दिए गए वर्ष के लिए रिकॉर्ड चुनना चाहता हूं। नौकरी के लिए एनएसपी्रेडिकेट कैसे बनाया जाए? कोर डाटा में तारीख कार्यों के बारे में कुछ भी (यदि हो) नहीं मिलाकिसी दिनांक क्षेत्र के "वर्ष" भाग पर फ़िल्टर करने के लिए एनएसपीडिकेट

धन्यवाद

उत्तर

1

एक संभावित विधि:

चरण 1) देखें से एप्पल के "दिनांक और समय प्रोग्रामिंग" अवयव से एक तिथि बनाना " मार्गदर्शक।" वर्ष की शुरुआत का प्रतिनिधित्व करने वाले एनएसडीएटी और वर्ष के अंत का प्रतिनिधित्व करने वाले एनएसडीएटी बनाएं।

चरण 2) फिर आप एक अनुमान बना सकते हैं जो दिनांक प्रविष्टियों के साथ वस्तुओं की खोज करता है जो पहली तारीख से अधिक हैं और अंतिम तिथि से कम हैं।

विधेय कुछ इस तरह दिखेगा:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@“(inceptionDate > %@) AND (inceptionDate < %@)”, dateBeginYear, dateEndYear]; 
+0

दरअसल मैं सिर्फ ऐसा ही कुछ करने की कोशिश की और यह काम कर रहा है लेकिन रोग के विचार क्लीनर – kindoblue

+1

लगता है हमेशा की तरह, वहाँ हमेशा हर समस्या के लिए एक साफ, अच्छा, सुरुचिपूर्ण समाधान है, लेकिन यह गलत है :-) रोग द्वारा सुझाए गए विचार का पालन करना संभव नहीं था: क्षणिक गुणों के आधार पर एक अनुमान – kindoblue

+0

@kindoblue नहीं हो सकता है: पूर्ण, एक्रोबेटिक पोस्ट करने के लिए धन्यवाद जवाब। मैंने संदर्भ के लिए इसे दूर कर लिया है। और मुझे आश्चर्य है कि क्या आप अभी भी एक क्षणिक attr के साथ कुछ नहीं कर सकते हैं, इसे उस काम के दौरान सेट कर रहे हैं जो आप fetch के साथ कर रहे हैं, जिसके बाद क्षणिक डेटा कैश्ड ऑब्जेक्ट्स की तारीख जानकारी में हेरफेर करना आसान बनाता है। – Wienke

5

आखिरकार मैं और अधिक या कम के रूप में Wienke ने सुझाव दिया था। विधेय कि एक निश्चित साल (रों) के लिए रिकॉर्ड को हासिल करेगा बनाने के लिए, मैं इस तरह किया:

- (NSPredicate*) predicateFromYear:(NSInteger)start span:(NSInteger)aSpan { 
NSCalendar *cal = [NSCalendar currentCalendar]; 
NSDateComponents *dc = [NSDateComponents new]; 

[dc setYear:start]; 

NSDate *startDate,*endDate; 

startDate = [cal dateFromComponents:dc]; 
[dc setYear:aSpan]; 
endDate = [cal 
      dateByAddingComponents:dc 
      toDate:startDate 
      options:0]; 

[dc release]; 
return [NSPredicate predicateWithFormat: 
     @"date >= CAST(%f, \"NSDate\") AND date < CAST(%f, \"NSDate\")", 
     [startDate timeIntervalSinceReferenceDate], 
     [endDate timeIntervalSinceReferenceDate]]; } 
+0

एनएसडीएटी के लिए कलाकार ने मेरे लिए चाल की, धन्यवाद! –

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