2011-06-27 5 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変数は、通常、テーブルビューdelegate/datasourceコールバックから供給されます。 UITableViewを使用している場合は、最後に指定した2行のコードを次のいずれかの方法で配置する必要があります。

- (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 ==%@を」タイムスタンプはミリ秒への正確な日付がある場合にのみ機能します。これが欲しいのであれば、そうでなければ日付範囲@ "timeStamp> =%@ AND timeStamp < =%@"を使用してください。

注:あなたのコード

要求
sortDescriptor
sortDescriptors

+0

おかげで、ジョーのすべてを掲示場合、複数のオブジェクト上のあなたの行方不明のリリース、私はacutallyこのコードwithaカレンダーを使用していますメソッドタイトルは ' - (void)calendarMonthView:(TKCalendarMonthView *)monthView didSelectDate:(NSDate *)d'です。私はこのメソッドを適切に使う方法があまりよく分かりません。 – Jon

+0

複数のセッションを1つの日付にすることは可能ですか?もしそうなら、複数のセッションをどのように表示していますか? – Joe

+0

いいえ、セッションが作成されると、1つの日付に対して1を超えることはできません。 2つのセッションオブジェクトの日付は同じではありません。 (日) – Jon