ios - 我的复合谓词应该如何构造才能包含在内

标签 ios objective-c nspredicate

我正在为我的应用程序中的任务列表构建一个过滤器,当我尝试组合所有过滤器时,我看不到任何数据。

预期的结果是,如果我选择所有过滤器,我将看到我的整个数据集。

下面是过滤器的简化版本——通过选择完成和未完成的任务状态来说明问题。

2015-06-29 14:33:49.611 TasksApp[32174:1144416] ADD FILTER FOR INCOMPLETE TASKS
2015-06-29 14:33:49.612 TasksApp[32174:1144416] ADD FILTER FOR COMPLETE TASKS
2015-06-29 14:33:49.613 TasksApp[32174:1144416] TEMP ARRAY COUNT: 5
2015-06-29 14:33:49.613 TasksApp[32174:1144416] LOCAL RESULTS FILTERED:     (
)

我正在使用以下代码创建和添加复合过滤器:

if ([[[defaults dictionaryRepresentation] allKeys] containsObject:@"myTasksIncomplete"]) {
    if([defaults boolForKey:@"myTasksIncomplete"]){
        NSLog(@"ADD FILTER FOR INCOMPLETE TASKS");
        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(Status == %@)", @"Incomplete"];
        [predicatesArray addObject:predicate];
    }
}

if ([[[defaults dictionaryRepresentation] allKeys] containsObject:@"myTasksComplete"]) {
    if([defaults boolForKey:@"myTasksComplete"]){
        NSLog(@"ADD FILTER FOR COMPLETE TASKS");
        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(Status == %@)", @"Complete"];
        [predicatesArray addObject:predicate];
    }
}

if ([[[defaults dictionaryRepresentation] allKeys] containsObject:@"myTasksToday"]) {
    if([defaults boolForKey:@"myTasksToday"]){
        //not setup yet
    }
}


//All of the predicates
NSLog(@"TEMP ARRAY COUNT: %li", [tempArray count]);
NSPredicate *compoundPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:predicatesArray];
self.localResults = [[tempArray filteredArrayUsingPredicate:compoundPredicate] mutableCopy];
NSLog(@"LOCAL RESULTS FILTERED: %@", self.localResults);

最佳答案

当您使用 +[NSCompioundPredicate andPredicateWithSubpredicates:] 创建 NSCompoundPredicate 时,它将传递通过每个 子谓词。您可能需要 +[NSCompioundPredicate orPredicateWithSubpredicates:],这将传递通过任何子谓词的项。

关于ios - 我的复合谓词应该如何构造才能包含在内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31123173/

相关文章:

iphone - 在 NSPredicate 中使用 NSDate

ios - 你如何找出对象的类型(在 Swift 中)?

ios - 将点击手势添加到 socket 集合

ios - iPhone 上 Watch 应用上的 watchOS 应用图标为空白

ios - 设置 AVPlayer AVPlayerItem 缓冲区大小?

objective-c - XCode 4 中的 "Test After Build"选项不起作用

ios - 在 Swift 中使用 RestKit 和 CoreData

iPhone RSS 阅读器——parseXML 不会加载某些 XML 提要

ios - NSPredicate & Parse 让它从数组中返回与当前用户匹配的结果,以及用户名字符串

ios - NSPredicate 用于 NSDictionary 和 NSDictionary?