我正在创建一个时钟应用程序,其中有一个ClockPunch NSManagedObject模型,其属性表示打卡和打卡。每个ClockPunch实例都与Employees模型中的Employee有一个关系(该模型也与每个punch有一对多关系)。我想写一份NSPredcate,让我了解员工最近的打卡情况。然后,我可以通过他们是否有一个打卡的重拳来确定他们是打卡还是打卡。我不想把所有的拳头都打进去然后分类,因为每个员工可能有1000个。我该怎么办?
我的型号看起来像这个
Employees<->>ClockPunches
我最近尝试了类似的方法。我试着找到最长日期的注册。
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
然而,我仍然缺少的部分是如何只查看特定员工的注册。。。我尝试组合设置NSPredcate的请求,但不知何故,它们无法一起使用。
注意:我使用restkit访问核心数据,请按照链接获取纯核心数据示例(只有一小部分代码不同)