根据 coredata 中的属性名称获取唯一对象

Posted

技术标签:

【中文标题】根据 coredata 中的属性名称获取唯一对象【英文标题】:Fetch unique object based on attribute name from coredata 【发布时间】:2015-06-10 11:51:07 【问题描述】:

我在 coredata 中有实体employee_detail

name | rate | factor |
_______|______|________|
John   |  3.2 |    4   |
Betty  |  5.5 |    7   |
Betty  |  2.1 |    2   |
Betty  |  3.1 |    2   |
Edward |  4.5 |    5   |
John   |  2.3 |    4   |

我想要基于属性名称的唯一对象

O/P 应该是

name | rate | factor |
_______|______|________|
John   |  3.2 |    4   |
Betty  |  5.5 |    7   |
Edward |  4.5 |    5   |

【问题讨论】:

您应该在查询中使用 DISTINCT 以获得此类结果 我已经尝试过了。但仍然无法正常工作 那么您必须手动管理,例如将新值添加到一个临时数组中并使用它 我和你想的一样,但我不想手动去,因为有时有成千上万的重复记录,然后手动过滤它需要太多时间。 从核心数据框架中获取数据 【参考方案1】:
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"employee_detail"];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"employee_detail" inManagedObjectContext:self.managedObjectContext];

fetchRequest.resultType = NSDictionaryResultType;
fetchRequest.propertiesToFetch = [NSArray arrayWithObject:[[entity propertiesByName] objectForKey:@"name"]];
fetchRequest.returnsDistinctResults = YES;

NSArray *dictionaries = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil];
NSLog (@"names: %@",dictionaries);

【讨论】:

它只是产生名称而已。我想要那个对象不仅仅是那个列。 你找到答案了吗? @Yagnesh Dobariya @YagneshDobariya 请在这里分享你的想法。 for 循环对象数组employee_detail。最初,根据示例数组将有 6 个employee_detail 类型的对象。管理一个临时数组。使用数组对象 6 对象编写 for 循环并检查临时数组中可用的对象。如果不在临时数组中添加对象,否则继续循环中的下一个对象。最终的临时数组将是输出。

以上是关于根据 coredata 中的属性名称获取唯一对象的主要内容,如果未能解决你的问题,请参考以下文章

Core Data 获取仅具有唯一属性的实体

SwiftUI 中的 CoreData:如何清楚地获取属性?

从CoreData获取给定属性具有相同值的对象?

jQuery - 根据 attr 值仅获取选中复选框的唯一值

基于实体属性确保 CoreData 实体唯一的最佳实践

核心数据:获取特定对象的多对多关系中的所有实体?