2011-06-27 442 views
1

我有以下提取。我想获取谓词为真的Session对象。需要帮助NSFetchRequest

任何人都可以告诉我,如果我是这样做的权利。我如何初始化/定义indexPath,因为它没有被识别。

NSDate * searchDate = [formatter dateFromString:dateString]; 
NSFetchRequest *request = [[NSFetchRequest alloc]init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Session" inManagedObjectContext:self.managedObjectContext]; 
[request setEntity:entity]; 
NSPredicate * predicate1 = [NSPredicate predicateWithFormat:@" timeStamp == %@ ", searchDate]; 
[request setPredicate: predicate1]; 
[request setFetchBatchSize:20]; 
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"timeStamp" ascending:NO]; 
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 
[request setSortDescriptors:sortDescriptors]; 
NSError *error = nil; 
NSArray *array = [managedObjectContext executeFetchRequest:request error:&error]; 

SessionViewController *sessionViewController = [[SessionViewController alloc] initWithNibName:@"SessionViewController" bundle:nil]; 
self.selectedSession = (Session *)[array objectAtIndexPath:indexPath]; 

sessionViewController.selectedSession = self.selectedSession; 

[self.navigationController pushViewController:sessionViewController animated:YES]; 
[sessionViewController release]; 
[sortDescriptor release]; 
[request release]; 
[sortDescriptors release]; 

回答

0

indexPath然后变量通常是从的tableview delegate/datasource回调供给。如果您使用的是UITableView,则您提供的最后两行代码应放置在以下方法之一中。

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath 
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath 

其他行应该在一个方法来让你的数据显示在tableview。

-(NSArray*)sessionData 
{ 
    if(!_sessionData) 
    { 
     //FetchRequest stuff 
     NSError *error = nil; 
     _sessionData = [managedObjectContext executeFetchRequest:request error:&error]; 
     //Error checking/logging 
    } 
    return _sessionData; 
} 

现在,下面的@“timeStamp ==%@”只有在时间戳是EXACT日期到毫秒时才有效。如果这是你想要的,那么使用日期范围@“timeStamp> =%@ AND timeStamp < =%@”。

注意:您对您发布的所有代码

要求
sortDescriptor
sortDescriptors

+0

谢谢,乔的几个对象缺少的版本中,我实际上可以使用此代码难熬日历和方法标题是' - (void)calendarMonthView:(TKCalendarMonthView *)monthView didSelectDate:(NSDate *)d'。我不太确定如何正确使用这种方法。 – Jon

+0

是否可以在一个日期进行多个会话?如果是的话,你如何显示多个会话。 – Joe

+0

不,创建会话时,1个日期不允许超过1。没有2个会话对象具有相同的日期。 (天) – Jon