我想创建一个NSFetchRequest
对于这样的对象:
The Object
is Car
其中有一个attribute
color
。
我有四辆车:
car1.color = red
car2.color = red
car3.color = blue
car4.color = green
我想创建一个NSPredicate
每种颜色仅选择一辆车(选择哪辆车并不重要。
我怎样才能实现这个目标?
事实上我正在寻找类似的东西DISTINCT
in SQL
核心数据does支持获取不同的值。苹果甚至在这里提供了示例代码:http://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/CoreDataSnippets/Articles/fetchExpressions.html http://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/CoreDataSnippets/Articles/fetchExpressions.html
从该页面:
获取不同的值
获取所有属性中特定属性的唯一值
给定实体的实例,您可以使用以下命令配置获取请求
方法 setReturnsDistinctResults: (并传递 YES 作为参数)。你
还指定 fetch 应返回字典而不是
托管对象,以及要获取的属性的名称。
斯威夫特2.0
let context:NSManagedObjectContext! = <#Get the context#>
let entity = NSEntityDescription.entityForName( "<#Entity name#>", inManagedObjectContext:context )
let request = NSFetchRequest()
request.entity = entity
request.resultType = .DictionaryResultType
request.returnsDistinctResults = true
request.propertiesToFetch = [ "<#Attribute name#>" ]
var objects:[[String:AnyObject]]?
do
{
try objects = context.executeFetchRequest( request )
}
catch
{
// handle failed fetch
}
Obj-C
NSManagedObjectContext *context = <#Get the context#>;
NSEntityDescription *entity = [NSEntityDescription entityForName:@"<#Entity name#>" inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entity];
[request setResultType:NSDictionaryResultType];
[request setReturnsDistinctResults:YES];
[request setPropertiesToFetch:@[@"<#Attribute name#>"]];
// Execute the fetch.
NSError *error = nil;
id requestedValue = nil;
NSArray *objects = [context executeFetchRequest:request error:&error];
if (objects == nil) {
// Handle the error.
}
(一个“问题”是结果将以字典的形式返回——如果您需要对象,您可以进行另一次获取以通过 ID 获取它们)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)