【问题标题】:CoreData Fetch Request with Most recent Predicate具有最新谓词的 CoreData 获取请求
【发布时间】:2018-01-08 23:06:09
【问题描述】:

我有一个Entity“事件”,其中包含一个名为“AccidentDate”的NSDate 属性。我正在尝试执行获取请求以仅获取最新的“AccidentDate”,但我不确定如何设置谓词以仅获取最后的“AccidentDate”

下面是我目前的代码...

NSFetchRequest *fetchRequest1 = [[NSFetchRequest alloc] init];

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:self.managedObjectContext];

[fetchRequest1 setEntity:entity];

NSPredicate *predicate;                            //unknown code here
[fetchRequest1 setPredicate:predicate];

NSArray *items = [self.managedObjectContext executeFetchRequest:fetchRequest1 error:&error];

[fetchRequest1 release];

任何帮助将不胜感激。谢谢

【问题讨论】:

    标签: iphone-sdk-3.0 core-data nspredicate


    【解决方案1】:

    您可以将排序描述符数组直接应用于NSFetchRequest,并且可以进一步将其获取限制设置为 1。这将创建以下代码:

    NSFetchRequest *fetchRequest1 = [[NSFetchRequest alloc] init];
    
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event"  inManagedObjectContext:[self managedObjectContext]];
    
    [fetchRequest1 setEntity:entity];
    
    NSSortDescriptor *dateSort = [[NSSortDescriptor alloc] initWithKey:@"accidentDate" ascending:NO];
    [fetchRequest1 setSortDescriptors:[NSArray arrayWithObject:dateSort]];
    [dateSort release], dateSort = nil;
    
    [fetchRequest1 setFetchLimit:1];
    
    NSManagedObject *latest = [[[self managedObjectContext] executeFetchRequest:fetchRequest1 error:&error] lastObject];
    
    [fetchRequest1 release], fetchRequest1 = nil;
    

    【讨论】:

      【解决方案2】:

      我会在没有谓词的情况下获取按 AccidentDate 排序的所有事件,并从数组中获取第一个事件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-15
        • 2011-02-01
        • 2021-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-22
        相关资源
        最近更新 更多