2011-11-10 9 views
1

私は、自分の写真に関する情報をコアデータに格納するエンティティを持っています。このエンティティの属性の1つは「lastSeen」で、画像が最後に表示された日時を格納します。NSDateオブジェクトをコアデータから照会する

過去48時間以内に表示された画像のみを表示するようにデータベースを照会したいと考えています。どうすればいい?

私はtimeIntervalSinceNowとNSPredicteのようないくつかのメソッドを使用する必要があることを知っていますが、このクエリの構文がどのように見えるかわかりません。

何か助けていただければ幸いです。

ありがとうございます!

答えて

2
NSDate *minimalDate = [NSDate dateWithTimeIntervalSinceNow:-172800]; // 48h = 48*60*60 seconds 
NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
request.entity = [NSEntityDescription entityForName:@"Photo" inManagedObjectContext:context]; 
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"viewDate" ascending:NO]]; 
request.predicate = [NSPredicate predicateWithFormat:@"viewDate > %@", minimalDate]; 
request.fetchBatchSize = 20; 
NSFetchedResultsController *frc = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:context sectionNameKeyPath:nil cacheName:nil]; 
[request release]; 
self.fetchedResultsController = frc; 
[frc release]; 

補遺

ここで私はviewDate属性を作成する方法です。

myProjectName.xcdatamodeldで、写真エンティティを選択します。 'viewDate'という名前の属性を追加し、 'Date'と入力します。 これを選択し、編集>コピーを押します。

Photo.hに移動し、プロパティを生成する場所をクリックします。 この特別な貼り付けオプションを選択してください: 編集> '属性の貼り付け'。生成するPhoto.m

@property (nonatomic, retain) NSDate * viewDate; 

同じ: それは、このコード行を生成する必要があります

self.photo.viewDate = [NSDate date]; 
+0

ヨーストはあなたに感謝:

@dynamic viewDate; 

を私はこのように私PictureViewControllerのloadViewメソッドで日付を設定しますとても!!これはまさに私が必要としていたものです。 私はあなたに感謝します! –

+0

私の喜び! PS - 変更されたviewDate属性をディスクに保存することを忘れないでください! このために、AppDelegateからsaveContextメソッドをコピーできます。 – Joost

関連する問題