2016-11-11 80 views
0

在我的應用程序中,一個審計有許多調查結果。如何在給定現有NSPredicate的情況下爲子查詢創建NSPredicate?

我有一個返回NSPredicate其通過搜索文本和類型ID過濾結果的方法:

+ (NSPredicate)predicateWithSearchText:(NSString *)searchText typeId:(NSNumber *)typeId; 

我想用這個謂詞根據他們的研究結果的特性來過濾審計的陣列。因此,給出的第一個方法的輸出,我想創建一個新的等效謂詞:

[NSPredicate predicateWithFormat:@"SUBQUERY(findings, $x, ????)[email protected] > 0"] 

...其中????適用我現有的謂詞審計的調查結果。

如何在不暴露+predicateWithSearchText:typeId:內部邏輯的情況下做到這一點?

回答

0

是這樣的東西你在找什麼?

- (void)sampleMethod:(NSPredicate *)predicateWithSearchText { 
    NSPredicate *pred = [NSPredicate predicateWithBlock:^BOOL(id object, NSDictionary *bindings) { 
     BOOL auditFinding = [self auditFinding:object]; 
     BOOL predFinding = [predicateWithSearchText evaluateWithObject:object]; 
     return auditFinding && predFinding; 
    }]; 
} 
+0

我正在尋找具有該效果的東西,是的。理想情況下,我希望它與將其作爲子查詢寫入完全相同,以便核心數據可以高效地將其寫爲SQL語句。但如果一段時間後沒有出現這種情況,我會將其標記爲正確的答案。 – Simon