NSPredicate:获取每种类型之一

2024-04-26

我想创建一个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(使用前将#替换为@)

NSPredicate:获取每种类型之一 的相关文章

随机推荐