ฉันจะสร้าง NSPredicate สำหรับแบบสอบถามย่อยที่มี NSPredicate ที่มีอยู่ได้อย่างไร

ในแอปของฉัน การตรวจสอบหนึ่งรายการมีผลการวิจัยมากมาย

ฉันมีวิธีที่ส่งคืน NSPredicate ซึ่งกรองการค้นหาตามข้อความค้นหาและรหัสประเภท:

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

ฉันต้องการใช้เพรดิเคตนี้เพื่อกรองอาร์เรย์ของการตรวจสอบตามคุณสมบัติของการค้นพบ ดังนั้น เมื่อพิจารณาผลลัพธ์ของวิธีแรกแล้ว ฉันต้องการสร้างเพรดิเคตใหม่ที่เทียบเท่ากับ:

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

...โดยที่ ???? ใช้ภาคแสดงของฉันกับผลการตรวจสอบ

ฉันจะทำสิ่งนี้โดยไม่เปิดเผยตรรกะภายใน +predicateWithSearchText:typeId: ได้อย่างไร


person Simon    schedule 11.11.2016    source แหล่งที่มา


คำตอบ (1)


มีสิ่งเช่นนี้สิ่งที่คุณกำลังมองหา?

- (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;
    }];
}
person Alex    schedule 11.11.2016
comment
ฉันกำลังมองหาบางสิ่งบางอย่างที่มีผลกระทบนั้นใช่ ตามหลักการแล้ว ฉันต้องการให้เทียบเท่ากับการเขียนเป็นแบบสอบถามย่อยทุกประการ เพื่อให้ข้อมูลหลักสามารถเขียนเป็นคำสั่ง SQL ได้อย่างมีประสิทธิภาพ แต่ถ้าผ่านไปสักพักแล้วไม่มีอะไรเกิดขึ้น ฉันจะทำเครื่องหมายว่าเป็นคำตอบที่ถูกต้อง - person Simon; 13.11.2016