1
我敢肯定我對嘗試將SQL邏輯應用於核心數據感到內疚,但即使在閱讀Apple文檔後,我仍然不確定正確的方法。如何計算一個計算出的屬性?
總結核心數據實體中兩個日期屬性差異的最佳策略是什麼?我在「appt」類中有一個「numHours」計算屬性,但不在xcdatamodel中。下面的代碼失敗,出現「在實體中找不到鍵盤路徑」錯誤。非常感謝您的任何建議。
從聘任類- (float)numHours {
float hours = ([self.endTime timeIntervalSinceDate:self.startTime] - [self.durationOfBreak intValue])/3600.00;
return hours;
}
企圖在獲取「NUMHOURS」屬性
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"appt" inManagedObjectContext:self.managedObjectContext];
[request setEntity:entity];
NSPredicate *datePredicate = [NSPredicate predicateWithFormat:@"date >= %@ && date < %@", self.startDate, self.endDate];
[request setPredicate:datePredicate];
[request setResultType:NSDictionaryResultType];
NSExpression *numHoursPath = [NSExpression expressionForKeyPath:@"numHours"];
NSExpression *hoursSum = [NSExpression expressionForFunction:@"sum:"
arguments:[NSArray arrayWithObject:numHoursPath]];
NSExpressionDescription *debitExpressionDescription = [[NSExpressionDescription alloc] init];
[debitExpressionDescription setName:@"totalhours"];
[debitExpressionDescription setExpression:hoursSum];
[debitExpressionDescription setExpressionResultType:NSDecimalAttributeType];
[request setPropertiesToFetch:[NSArray arrayWithObject:debitExpressionDescription]];
[debitExpressionDescription release];
NSError *error = nil;
NSArray *results = [managedObjectContext executeFetchRequest:request error:&error];