2009-09-12 4 views
2

관계가있는 쿼리에서 작동하는 모든 조건자는 처음에는 ANY 또는 ALL (즉, ANY [tag] [LIKE [c] "car")이라는 단어를 포함한다는 것을 보았습니다. 제거하면 (예 : tags.name LIKE [c] "car") 결과가 잘못되거나 다음과 같은 메시지가 나타납니다. 객체에서 정규 표현식 일치를 수행 할 수 없습니다.NSPredicateEditor 및 관계

NSPredicateEditor를 사용하기 때문에 자신의 쿼리를 시작하는 ANY 또는 ALL이 없으므로 항상 실패합니다. 리턴 된 술어는 항상 두 x 째 예와 같습니다 (ANY 또는 ALL 없음).

NSPredicateRowTemplateEditor를 서브 클래 싱하여 내 조건에 ANY 또는 ALL을 추가하거나 다른 방법입니까?

날짜가 똑같은 ... 내 날짜는 YYYY-MM-DD HH : mm : 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 
    } 

} 

그냥 RowTemplateRelationshipAny 또는 RowTemplateRelationshipAll에 IB에서 행 템플릿 클래스를 변경합니다.