gpt4 book ai didi

ios - 计算所有 NSManagedObjects 属性的平均值

转载 作者:行者123 更新时间:2023-11-28 22:31:29 24 4
gpt4 key购买 nike

我有一个名为 FoodItem 的实体,它有一个属性,price( double 值)。理想情况下,此代码的输出为:

Average Price is: 6.00

虽然我不确定如何访问值 6.00。任何人都可以帮助我吗?谢谢

这是我的代码:

NSEntityDescription *entity = [NSEntityDescription entityForName:@"FoodItem" inManagedObjectContext:self.managedObjectContext];

NSManagedObject *o1 = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:self.managedObjectContext];
[o1 setValue:@(5.00) forKey:@"price"];

NSManagedObject *o2 = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:self.managedObjectContext];
[o2 setValue:@(7.00) forKey:@"price"];


[self.managedObjectContext save:nil];

NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entity];


[request setSortDescriptors:@[]];

NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"price"];
NSExpression *averagePriceExpression = [NSExpression expressionForFunction:@"average:"
arguments:@[keyPathExpression]];

NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
[expressionDescription setName:@"averagePrice"];
[expressionDescription setExpression:averagePriceExpression];
[expressionDescription setExpressionResultType:NSDecimalAttributeType];

[request setPropertiesToFetch:[NSArray arrayWithObject:expressionDescription]];

NSFetchedResultsController *controller = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"Master"];


[controller performFetch:nil];

NSLog(@"Average price is: %@", @"");

最佳答案

我不明白为什么要为此使用获取结果 Controller 。 NSFetchedResultsController 不用于此目的。为此使用一个简单的 NSFetchRequest

// Your previous code here

// Execute the fetch.
NSError *error = nil;
NSArray *objects = [managedObjectContext executeFetchRequest:request error:&error];
if (objects == nil) {
// Handle the error.
}
else {
if ([objects count] > 0) {
NSLog(@"Average price is: %@", [[objects objectAtIndex:0] valueForKey:@"averagePrice"]);
}
}

可以从 Apple 文档 Fetching Specific Values 中找到一个简单的示例.

关于ios - 计算所有 NSManagedObjects 属性的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17306968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com