arn*_*app 20 iphone objective-c nspredicate nsfetchedresultscontroller ios
我想创建一个NSFetchRequest
像这样的对象:
的Object
是Car
其具有attribute
color
.我有四辆车:
car1.color = red
car2.color = red
car3.color = blue
car4.color = green
Run Code Online (Sandbox Code Playgroud)
我想创建一种NSPredicate
只为每种颜色选择一辆汽车(它选择哪辆车无关紧要.
我怎样才能做到这一点?
事实上,我正在寻找类似于DISTINCT
SQL的东西
nie*_*bot 19
核心数据确实支持获取不同的值.Apple甚至在这里提供示例代码:http://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/CoreDataSnippets/Articles/fetchExpressions.html
从该页面:
获取不同的值
要在给定实体的所有实例中获取特定属性的唯一值,请使用setReturnsDistinctResults:方法配置获取请求(并将YES作为参数传递).您还指定fetch应返回字典而不是托管对象,以及要获取的属性的名称.
Swift 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
}
Run Code Online (Sandbox Code Playgroud)
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.
}
Run Code Online (Sandbox Code Playgroud)
(一个"问题"是结果将作为字典返回 - 如果您需要对象,则可以执行另一次提取以通过ID获取它们)
ggr*_*ana 14
你试过用valueForKeyPath
吗?您可以在NSPredicate为您提供的数组中执行类似的操作.
NSArray* distinctColors = [cars valueForKeyPath:@"@distinctUnionOfObjects.color"];
Run Code Online (Sandbox Code Playgroud)
它会给你带来你所拥有的鲜明颜色,我不知道它是不是你想要的颜色,但是你可以用@Anupdas这样的颜色告诉你:
归档时间: |
|
查看次数: |
9961 次 |
最近记录: |