Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 是否有办法根据CoreData中存储的实际值设置NSPredicate?_Ios_Swift_Core Data - Fatal编程技术网

Ios 是否有办法根据CoreData中存储的实际值设置NSPredicate?

Ios 是否有办法根据CoreData中存储的实际值设置NSPredicate?,ios,swift,core-data,Ios,Swift,Core Data,我需要根据CoreDate中存储的实际值设置NSPredicate 假设我们有一个CoreData实体:“毕业生”。如果毕业生的毕业日期不为空,我们希望获取毕业日期早于日期1的毕业生。否则,我想检查他/她的生日是否早于Date2 谓词如下所示: "if graduationDate != null graduationDate < %@ else birthday < %@" “如果毕业日期!=null毕业日期

我需要根据CoreDate中存储的实际值设置NSPredicate

假设我们有一个CoreData实体:“毕业生”。如果毕业生的毕业日期不为空,我们希望获取毕业日期早于日期1的毕业生。否则,我想检查他/她的生日是否早于Date2

谓词如下所示:

"if graduationDate != null graduationDate < %@ else birthday < %@"
“如果毕业日期!=null毕业日期<%@否则生日<%@”
所以我实际上有两个谓词。只有当第一个谓词要检查的字段为null时,第二个谓词才会生效

我的想法:

  • 我可以在我的应用程序中处理这些数据,而不是CoreData,但我只是想知道是否有一种方法可以只使用一个NSPredicate来进行分类

  • 一些帖子提到NSPredicate相当于SQLWHERE子句,这对我来说很有意义。我想我需要的是超出Where子句的能力范围


  • 我的问题不是如何使用NSPredicate筛选获取结果。它是关于如何使用流控件(如if else子句)设置NSpredicate的

    您可以使用
    NSCompoundPredicate
    组合较小的谓词

        let graduates = NSPredicate.init(format: "graduationDate != NULL AND graduationDate < %@ ", graduationDate);
        let oldPeople = NSPredicate.init(format: "graduationDate == NULL AND birthday > %@ ", cutOffBirthday);
        let predicate = NSCompoundPredicate.init(orPredicateWithSubpredicates: [graduates, oldPeople]);
    
    let graduates=NSPredicate.init(格式:“graduationDate!=NULL,graduationDate<%@”,graduationDate);
    让oldPeople=NSPredicate.init(格式:“毕业日期==NULL,生日>%@”,截止日期);
    let predicate=NSCompoundPredicate.init(或predicatewithsubpredicates:[毕业生,老人]);
    
    您可以使用
    NSCompoundPredicate
    组合较小的谓词

        let graduates = NSPredicate.init(format: "graduationDate != NULL AND graduationDate < %@ ", graduationDate);
        let oldPeople = NSPredicate.init(format: "graduationDate == NULL AND birthday > %@ ", cutOffBirthday);
        let predicate = NSCompoundPredicate.init(orPredicateWithSubpredicates: [graduates, oldPeople]);
    
    let graduates=NSPredicate.init(格式:“graduationDate!=NULL,graduationDate<%@”,graduationDate);
    让oldPeople=NSPredicate.init(格式:“毕业日期==NULL,生日>%@”,截止日期);
    let predicate=NSCompoundPredicate.init(或predicatewithsubpredicates:[毕业生,老人]);
    
    向下滚动至“过滤结果”。这个问题也被问了好几次,所以你可以在发布新问题之前进行搜索。您还可以根据需要为多个谓词添加NSCompoundPredicate。如果NSPredicate和NSCompoundPredicate是“基本用法”,您能否解释核心数据获取的高级用法,以及您对我们这些受教育程度较低的基本用户的要求?向下滚动到“筛选结果”的可能重复。这个问题也被问了好几次,所以你可以在发布新问题之前进行搜索。您还可以根据需要为多个谓词添加NSCompoundPredicate。如果NSPredicate和NSCompoundPredicate是“基本用法”,您能否解释核心数据获取的高级用法以及您对我们这些受教育程度较低的基本用户的要求?可能重复的