2016-11-11 4 views
1

5 열이있는 tableView에 바인딩 된 coredata 엔티티가 있습니다. 테이블 뷰 정렬 등을 관리하기 위해 배열 컨트롤러를 사용하고 있습니다.SWIFT 3 OSX 코코아 배열 컨트롤러 및 CoreData 바인딩 "여러 열에서 검색"

제 문제는 바인딩을 사용하여 검색하는 것입니다. ArrayController에 바인딩 된 searchField가 있고 술어 형식이 데이터의 첫 번째 열로 설정됩니다. 모든 것이 잘 작동합니다. 또한 XCODE의 술어 형식을 변경하고 다른 열을 검색 할 수 있습니다.

나는 변화가 내 코드에서 술어 형식은 사용자가 자신이 선택한 열을 검색 할 수 있도록하는 방법을 알고있다 데 문제 ...

나는 다음과 같이 ArrayController을 수정 시도 :

let predicate = NSPredicate(format: "projectNumber contains[cd] %@", searchBar.stringValue) 
    searchArrayController.filterPredicate = predicate 

let predicate = NSPredicate(format: "customerName contains[cd] %@", searchBar.stringValue) 
    searchArrayController.filterPredicate = predicate 

projectNumber 및 CUSTOMERNAME 내 개체의 속성입니다.

이 방법으로 조건부를 설정하면 테이블 데이터가 사라집니다. 검색 필드를 조작하여 다시 표시 할 수 있지만 내 조건 설정을 무시하고 XCODE 스토리 보드에서 원래 세트를 따릅니다.

스토리 보드 설정은 다음과 같습니다 술어 형식 = projectNumber는 각 열에 대해 바인딩 조건을 추가

당신이 제공 할 수있는 사전에 어떤 도움을 주셔서 감사합니다 [CD] $ 값 ...

+0

프리디 케이트 설정은 ArrayController에 바인딩하는 searchField의 바인딩 관리자에 있음을 잊어 버리십시오. –

답변

0

을 포함하고 있습니다. 검색 필드의 predicate을 바인딩하면 바인딩 predicate2이 나타납니다. 코딩은 필요하지 않습니다.

+0

런타임에 검색 할 열을 선택하는 방법을 찾고있는 모든 사용자에게 적합합니다. Apple은 NSMenu를 사용하여 검색 메뉴 팝업을 제공하고 Xcode의 바인딩 패널에 설정된 각 열에 대한 조건자를 설정하는 기능을 제공합니다. 내 의견으로 열 검색 옵션을 표시하는 최선의 방법이 아닐 수 있습니다. 프리젠 테이션에 약간의 유연성이 있지만, 적어도 구현하기 쉽습니다. –