Core data 仅检索iOS核心数据中实体的一个属性的值

Core data 仅检索iOS核心数据中实体的一个属性的值,core-data,attributes,sum,fetch,faults,Core Data,Attributes,Sum,Fetch,Faults,我有一个名为“Records”的实体,它有一个名为NSDecimalNumber类的“amount”属性 当然,“记录”还有其他属性,比如“姓名”、“日期”等等 现在我只需要获取所有“记录”的amount属性来汇总它们 为了获得更好的性能,我只需要“amount”的值,而不在乎名称或日期 那我该怎么办呢 这是我的代码,但我想他们不够专业 NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"TransferR

我有一个名为“Records”的实体,它有一个名为NSDecimalNumber类的“amount”属性

当然,“记录”还有其他属性,比如“姓名”、“日期”等等

现在我只需要获取所有“记录”的amount属性来汇总它们

为了获得更好的性能,我只需要“amount”的值,而不在乎名称或日期

那我该怎么办呢

这是我的代码,但我想他们不够专业

NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"TransferRecord"];
request.includesSubentities = NO;
[request setPropertiesToFetch:[NSArray arrayWithObject:@"amount"]];
//    [request setReturnsObjectsAsFaults:NO];  // I don't know whether I shoud use this
[request setResultType:NSDictionaryResultType];
NSError *error = nil;
NSArray *temp = [self.fetchedResultsController.managedObjectContext executeFetchRequest:request error:&error];
if (temp) {
//        NSDecimalNumber *allTrans = [NSDecimalNumber zero];
//        for (NSDecimalNumber *one in [temp valueForKey:<#(NSString *)#>)
    NSLog(@"%@",[temp description]);
NSFetchRequest*request=[[NSFetchRequest alloc]initWithEntityName:@“TransferRecord”];
request.includesSubentities=否;
[请求setPropertiesToFetch:[NSArray arrayWithObject:@“amount”];
//[请求设置ReturnsObjectsAsFaults:否];//我不知道我是否应该用这个
[请求setResultType:NSDictionaryResultType];
n错误*错误=nil;
NSArray*temp=[self.fetchedResultsController.managedObjectContext executeFetchRequest:请求错误:&错误];
如果(临时){
//NSDecimalNumber*全反式=[NSDecimalNumber零];
//对于(NSDecimalNumber*1 in[temp valueForKey:)
NSLog(@“%@,[temp description]);
我不清楚“错误”是什么意思

您如何知道标准的获取速度不够快,无法满足您的需要?您是否已确定使用仪器获取是问题所在?(我这样问是因为让CD应用程序运行得更快的标准方法,特别是在iOS上,是使用更简单的谓词获取更多数据。然后,您可以使用RAM中的项集操作来优化查询。)

仔细想想,你就会明白为什么。行以连续字节的形式存储在磁盘上。这些行经常可以在同一个磁盘块中找到。因此,一次提取可能会得到许多行。磁盘提取是任何数据库查询中速度较慢的部分。在iOS上,闪存速度相当慢。它不是为高性能分散收集数据库而设计的IOW,iOS设备不需要为自己的操作系统安装SSD。顺便说一句,闪存上的抓取会将128k-256k字节带到缓冲区中。因此,获取更多行很容易,速度也相对较快

上面的代码基本正确

您需要阅读有关核心数据故障的文档。这是系统中的一个基本概念。苹果的文档非常清楚故障的性质。堆栈溢出是要求任何系统文档中都包含的基本信息的错误位置


Andrew

Eno,作为一个新用户,您可能不知道有一个接受答案的协议。这对那些花时间回答您问题的人是有益的。因此,如果您发现我的答案有用且完整,请您勾选上面我答案旁边的复选标记好吗?(在我答案开头的上下箭头旁边。)安德鲁