0

クロックインおよびクロックアウト パンチを表すプロパティを持つ ClockPunch NSManagedObject モデルがあるタイムクロック アプリケーションを作成しています。各 ClockPunch インスタンスには、Employees モデルの Employee との関係があります (これは、各パンチとも 1 対多の関係にあります)。従業員に最新のクロックイン パンチを提供する NSPredicate を作成できるようにしたいと考えています。次に、一致するクロックアウトパンチがあるかどうかによって、クロックインまたはクロックアウトされているかどうかを判断できます。すべてのパンチを引き出して並べ替えたくはありません。従業員ごとに 1000 が存在する可能性があるからです。私は何をすべきか?

私のモデルは次のようになります

Employees<->>ClockPunches
4

1 に答える 1

0

私は最近、このように非常によく似たものを試しました。日付が最大の登録を探してみました。

NSFetchRequest* request = [Registration fetchRequest];
NSExpression *date = [NSExpression expressionForKeyPath:@"time"];

NSExpression *maxDate = [NSExpression expressionForFunction:@"max:"
                                                  arguments:[NSArray arrayWithObject:date]];

NSExpressionDescription *d = [[[NSExpressionDescription alloc] init] autorelease];
[d setName:@"maxTime"];
[d setExpression:maxDate];
[d setExpressionResultType:NSDateAttributeType];
[request setPropertiesToFetch:[NSArray arrayWithObject:d]];

NSError *error = nil;
NSArray *objects = [Registration executeFetchRequest:request];
if (objects == nil) {
    // Handle the error.
} else {
    if (0 < [objects count]) {
        NSLog(@"Maximum date: %@", [[objects objectAtIndex:0] valueForKey:@"type"]);
    }
}

このページで詳細を確認できます。https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdFetching.html

ただし、まだ欠けている部分は、特定の従業員の登録のみを調べる方法です... NSPredicate を設定するリクエストを組み合わせてみましたが、どういうわけか一緒に使用できません。

注:コアデータへのアクセスにrestkitを使用しています。リンクに従って、純粋なコアデータの例を取得してください(コードのごく一部のみが異なります)

于 2012-09-07T21:32:25.003 に答える