2015-12-29 33 views
0

我现在有核心数据成功返回所有结果的特定实体名为事件:过滤芯的数据结果通过性能之间

NSManagedObjectContext *context = [delegate managedObjectContext]; 
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Event" 
                inManagedObjectContext:context]; 
NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
[request setEntity:entityDescription]; 

NSError *error; 
NSArray *fetchResults = [context executeFetchRequest:request error:&error]; 

现在日历的时间绘制我需要获取那些开始日期事件在本月和结束日期之前或之前也在本月或之后。

我相信答案与NSPredicate有关,但我对此还不够熟悉,却没有让它屈服于我的意愿。

+0

请告诉我们你已经尝试了什么。 –

+0

你想登录以获取当前月份之间的数据吗? –

+0

@PetahChristian这是谓词NSPredicate * predicateClass = [NSPredicate predicateWithFormat:@“(field_start_date> =%@)AND(field_end_date <=%@)”,startDate,endDate]; –

回答

1

更改条件的谓词:

NSDate * firstDateOfMonth = [self returnDateForMonth:month year:year day:2]; 
NSDate * lastDateOfMonth = [self returnDateForMonth:month+1 year:year day:1]; 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(startDate => firstDateOfMonth) and (endDate <= lastDateOfMonth)”]; 

NSManagedObjectContext *context = [delegate managedObjectContext]; 

NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Event"            inManagedObjectContext:context]; 

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
[request setEntity:entityDescription]; 
[request setPredicate:predicate]; 

NSError *error; 

NSArray *fetchResults = [context executeFetchRequest:request error:&error]; 
+1

你的查询部分是正确的,因为它只会影响属于当月的开始日期,但假设一个事件在2014年11月开始,并将于2018年11月结束,这种情况下它不会工作......对吗? –

+0

是的,那时它不会工作。您需要根据您的要求修改该条件。 –