2012-02-17 6 views
0

私は、与えられた日の最初の出現のための述語の方法を見出そうとしています。つまり、イベントが1日中複数回発生すると(範囲1〜16)、最初の発生を返してから、翌日に次の最初の発生を探します。fetchRequestでの最初の出現を述語する方法

答えて

1

1つのfetchRequestでこれを行うことはできません。あなたは2つをする必要があります。毎日の

、ちょうどソート日付の昇順で、その日の開始後に発生に制限し、一つのアイテムだけフェッチし、述語を使用します。あなたが欲しいよ、もちろん

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
request.entity = [NSEntityDescription entityForName:@"YourObject" inManagedObjectContext:context]; 
request.predicate = [NSPredicate predicateWithFormat:@"date > %@", beginningOfDay]; 
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES]]; 
request.fetchLimit = 1; 

をそれが同じ日にまだあることを確認するアイテムをチェックする。その後、次の日に繰り返します。

+0

お寄せいただきありがとうございますが、私はすでにこれを試しています。申し訳ありませんがコードを投稿してください。この問題は、フェッチ制限を1に設定することが非常に厳しいことです。その後のすべてのイベントは失われます。 – Jim

+0

私の悪い、私はあなたの質問のその部分を逃した。私は自分の答えを更新しました。しかし、短いバージョンでは、あなたはただ一つの 'NSFetchRequest'でそれをすることができなくなります。 – yuji

+0

私は、複数のfetchRequestが必要だと感じました。私はSUBQUERYでそれを行うためのスマートな方法があることを望んでいました。 NSPredicateが条件文(switch、ifなど)をサポートしていないことは残念です。 – Jim

関連する問題