【问题标题】:How to predicate for first occurrence on a fetchRequest如何断言第一次出现在 fetchRequest
【发布时间】:2012-02-17 14:46:57
【问题描述】:

我正在尝试找到一种方法来预测特定日期第一次发生的事件。所以说一个事件在一天中发生了多次(范围 1-16),我只希望它返回第一次出现,然后在第二天寻找下一个第一次出现。

【问题讨论】:

    标签: iphone ios nsfetchedresultscontroller predicate


    【解决方案1】:

    您将无法通过一个 fetchRequest 执行此操作;你需要做两个。

    对于每一天,只需使用谓词限制在当天开始之后的出现,按日期升序排序,并且只获取一项:

    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    request.entity = [NSEntityDescription entityForName:@"YourObject" inManagedObjectContext:context];
    request.predicate = [NSPredicate predicateWithFormat:@"date > %@", beginningOfDay];
    request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES]];
    request.fetchLimit = 1;
    

    当然,您需要检查您收到的商品,以确保它还在同一天。然后,第二天重复。

    【讨论】:

    • 感谢您的建议,但我已经尝试过了。抱歉应该发布代码。这样做的问题是将获取限制设置为 1 太严重了。所有后续事件都将丢失。
    • 我的错,我错过了你问题的那一部分。我更新了我的答案。但简而言之,您将无法仅使用一个 NSFetchRequest
    • 我有一种感觉,我需要多个 fetchRequest。我希望有一种聪明的方法来使用 SUBQUERY。很遗憾 NSPredicate 不支持条件(switch、if 等)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 2014-07-12
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多