2011-06-27 342 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