2011-03-07 18 views
5

शायद आप मेरी मदद कर सकते हैं।आईओएस एनएसडीएट कोर डेटा लाने के अनुरोध की तुलना करें

-(NSMutableArray *)returnItemsWithName:(NSString *)name{ 

    NSFetchRequest *fetch=[[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity=[NSEntityDescription entityForName:@"XYZ" inManagedObjectContext:[self managedObjectContext]]; 
    [fetch setEntity:entity]; 
    NSDate *sevenDaysAgo = [appDelegate dateByAddingDays:-7 toDate:[NSDate date]]; 
NSPredicate *pred= [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"originTime >= %@", sevenDaysAgo]]; 
    [fetch setPredicate:pred]; 
    NSError *fetchError=nil; 
    NSMutableArray *fetchedObjs = [[[self managedObjectContext] executeFetchRequest:fetch error:&fetchError] retain]; 
    if (fetchError!=nil) { 
     return nil; 
    } 

    return fetchedObjs; 

} 

लाइन

fetchedObjs = [[[self managedObjectContext] executeFetchRequest:fetch error:&fetchError] retain]; 

त्रुटि के साथ दुर्घटनाओं:

* समाप्त एप्लिकेशन न आया हुआ अपवाद 'NSInvalidArgumentException' के कारण, कारण: क्या इस कोड के साथ गलत है 'करने में असमर्थ प्रारूप स्ट्रिंग को पार्स करें "मूल समय> = 2011-02-28 21:07:37 +0000"

सभी ऑब्जेक्ट्स शून्य नहीं हैं और मूल डेटा भी हैं

[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"originTime >= %@", sevenDaysAgo]]; 

predicateWithFormat:पहले से ही एक प्रारूप स्ट्रिंग चाहता है: ई सीडी डेटाबेस में एक NSDate

+0

"originDate" या "originTime" फ़ील्ड का नाम है? – Anomie

उत्तर

10

आपकी समस्या यह है। यह अनावश्यक है और जैसा कि आपने पाया है, आप जो कर रहे हैं उसे करने में गलत है। हालांकि यह ठीक करना आसान है:

[NSPredicate predicateWithFormat:@"originTime >= %@", sevenDaysAgo]; 

यह ठीक काम करेगा।

+0

यहां 'originTime' है जिसका नाम एनएसडीएटी के साथ एक विशेषता है? यदि हां प्रारूप के साथ भविष्यवाणी कैसे की जाती है? क्या हमें 'laterDate:' फ़ंक्शन का उपयोग नहीं करना चाहिए? क्या '>' और '<' ऑपरेटर तिथियों के लिए काम करते हैं? – iosMentalist