2009-09-12 2 views
2

Я видел, что каждый предикат, который работает в запросе с отношением, содержит в начале слова ЛЮБЫЕ или ВСЕ (т. Е. ЛЮБЫЕ теги.name LIKE [c] "автомобиль"), факт, если я удалю его (т. е.: tag.name LIKE [c] "автомобиль"), результат неверный или я получаю сообщение, подобное этому: не удается выполнить сопоставление регулярных выражений на объекте.NSPredicateEditor и отношения

Поскольку я использую NSPredicateEditor, у них нет ЛЮБОГО или ВСЕГО, которое начинает мой запрос, поэтому он всегда терпит неудачу. Возвращенные предикаты всегда похожи на второй пример (без ЛЮБОГО или ВСЕГО).

Должен ли я подклассифицировать NSPredicateRowTemplateEditor, чтобы добавить себя ЛЮБОЙ или ВСЕЙ в мой предикат, или это их другой способ?

То же самое с датами ... мои даты сохраняются в этом формате: ГГГГ-ММ-ДД ЧЧ: мм: ss, но NSPredicateEditor использует DD/MM/YYYY, поэтому каждый раз, когда я пытаюсь сопоставить дату, это не работает. Должен ли я также подклассировать RowEditor, чтобы изменить формат даты?

спасибо.

+0

Ответил здесь: http://stackoverflow.com/questions/210735/automatically-generated-predicate-row-templates-for-to-many-key – gertiMN

ответ

0

Здесь вы идете:

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.

Смежные вопросы