嗨,我是新來的這個coredata。我有兩個實體CategoryList和ExpenseList。所屬分類包括兩個屬性
1.dates(NSDate的)
2.categories(的NSString)
並與ExpenseList一對多的關係,關係的名稱是 「expenseList」 ExpenseList由 1.amountSpent(浮動)的。
我只是想知道學習關於coredata的關係特徵。當我試圖創建一個nspredicate來篩選特定日期的數據時,它不返回任何內容。我只想過濾CategoryList實體中的categories屬性內容以獲得特定的日期。這是我的代碼使用NSPredicate按日期過濾coredata不會返回任何內容
-(void) callingByDate
{
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSEntityDescription *categoryL = [NSEntityDescription entityForName:@"CategoryList" inManagedObjectContext:managedObjectContext];
NSSortDescriptor *dateSort = [[NSSortDescriptor alloc]initWithKey:@"date" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc]initWithObjects:dateSort, nil];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"dates == %@",date];
NSFetchRequest *dateFetch = [[NSFetchRequest alloc]init];
[dateFetch setSortDescriptors:sortDescriptors];
[dateFetch setEntity:categoryL];
[dateFetch setPredicate:predicate];
NSMutableArray *results = [[managedObjectContext executeFetchRequest:dateFetch error:nil] mutableCopy];
if([results count] > 0)
NSLog(@"results found");
else
NSLog(@"no results found");
}
當我在nslog區域執行此代碼時,它顯示'找不到結果'。我無法弄清楚爲什麼。在此先感謝
這裏是我的代碼,以查找結束一天
-(NSDate *)beginningOfDay:(NSDate *)date;
{
NSDate *dat = [NSDate date];
NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *components = [cal components:(NSMonthCalendarUnit | NSYearCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:dat];
[components setHour:0];
[components setMinute:0];
[components setSecond:0];
return [cal dateFromComponents:components];
}
-(NSDate *)endOfDay:(NSDate *)date;
{
NSDate *dat = [NSDate date];
NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *components = [cal components:(NSMonthCalendarUnit | NSYearCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:dat];
[components setHour:23];
[components setMinute:59];
[components setSecond:59];
return [cal dateFromComponents:components];
時,我的NSLog的開始,其結果表現爲 startday指定-2013-04-30 18:30:00 +0000 endOfDay -2013-05-01 18:29:59 +0000
@ user523234我會試試看。你能找到任何其他的錯誤,而不是這個。感謝您的回覆 – 2013-05-03 00:53:06
你從來沒有實際聲明過什麼日期。 – sosborn 2013-05-03 01:00:08
@sosborn是的,我做到了。我在viewDidLoad中聲明瞭這一點。 'date'字符串會給出當前設備的日期。 – 2013-05-03 01:09:55