簡體   English   中英

NSPredicateEditor和關系

[英]NSPredicateEditor and relationships

我已經看到,在具有關系的查詢中起作用的每個謂詞開頭都包含單詞ANY或ALL(即:ANY tags.name LIKE [c]“ car”),事實是,如果我將其刪除(即, :tags.name LIKE [c]“ car”),結果是錯誤的,或者我得到這樣的消息:無法對對象進行正則表達式匹配。

由於我使用的是NSPredicateEditor,因此它們不是啟動查詢的ANY或ALL,因此它總是失敗。 返回的謂詞始終像第二個示例(沒有ANY或ALL)。

為了將自己的ANY或ALL添加到我的謂詞中,我是否必須對NSPredicateRowTemplateEditor進行子類化,或者它們是另一種方式?

與日期相同...我的日期以以下格式保存:YYYY-MM-DD HH:mm:ss,但是NSPredicateEditor使用DD / MM / YYYY,因此,每次嘗試進行日期比較時,它均不起作用。 為了更改日期格式,是否還必須對RowEditor進行子類化?

謝謝。

干得好:

class RowTemplateRelationshipAny: NSPredicateEditorRowTemplate {



    override func predicate(withSubpredicates subpredicates: [NSPredicate]?) -> NSPredicate{

        let predicate: NSComparisonPredicate = super.predicate(withSubpredicates: subpredicates) as! NSComparisonPredicate

        let newPredicate = NSComparisonPredicate(leftExpression: predicate.leftExpression, rightExpression: predicate.rightExpression, modifier: .any, type: predicate.predicateOperatorType, options: predicate.options)

        return newPredicate
    }

}

class RowTemplateRelationshipAll: NSPredicateEditorRowTemplate {


    override func predicate(withSubpredicates subpredicates: [NSPredicate]?) -> NSPredicate{

        let predicate: NSComparisonPredicate = super.predicate(withSubpredicates: subpredicates) as! NSComparisonPredicate

        let newPredicate = NSComparisonPredicate(leftExpression: predicate.leftExpression, rightExpression: predicate.rightExpression, modifier: .all, type: predicate.predicateOperatorType, options: predicate.options)

        return newPredicate
    }

}

只需將IB中的行模板類更改為RowTemplateRelationshipAny或RowTemplateRelationshipAll。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM